Readonly y callables de primera clase en PHP
Propiedades inmutables y la sintaxis (...) que eleva cualquier callable.
<?php
final class Point {
public function __construct(
public readonly float $x,
public readonly float $y,
) {}
public function length(): float {
return sqrt($this->x ** 2 + $this->y ** 2);
}
}
$p = new Point(3.0, 4.0);
echo $p->length(), "\n";
// first-class callable syntax turns any function into a closure
$len = $p->length(...);
echo $len(), "\n";
echo implode(" ", array_map(strtoupper(...), ["read", "only"])), "\n";
Cómo funciona
- Las propiedades promovidas
readonlyse fijan una sola vez en el constructor. lengthcalcula a partir de$this->xy$this->y, sin mutar nada.$p->length(...)convierte el método en una clausura para llamar después.strtoupper(...)entrega una función con nombre directo aarray_map.
Palabras clave y builtins usados aquí
array_mapclassechofinalfunctionimplodenewpublicreadonlyreturnsqrtstrtoupper
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 426
- Tokens
- 104
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 83 segundos.
Paso 3 de 3 en Toques modernos; paso 24 de 27 en Fundamentos del lenguaje.