diff --git a/language/attributes.xml b/language/attributes.xml index 331cdab31..56c9197f3 100644 --- a/language/attributes.xml +++ b/language/attributes.xml @@ -1,8 +1,8 @@ - + - + Atributos Descripción general de atributos @@ -32,7 +32,7 @@ Implementación de métodos opcionales de una interfaz mediante atributos - + Sintaxis de atributos - + + + &example.outputs; + + @@ -234,10 +238,8 @@ object(MyAttribute)#3 (1) { ["value"]=> int(1234) } -*/ - ]]> - + @@ -252,6 +254,21 @@ object(MyAttribute)#3 (1) { value = $value; + } +} + +#[MyAttribute(value: 1234)] +class Thing +{ +} function dumpMyAttributeData($reflection) { $attributes = $reflection->getAttributes(MyAttribute::class); @@ -282,7 +299,7 @@ dumpMyAttributeData(new ReflectionClass(Thing::class)); Clase de atributo simple - + Usar la especificación de destino para restringir dónde se pueden usar los atributos - + Usar IS_REPEATABLE para permitir que un atributo se use varias veces en una declaración - + - + - + Generators @@ -86,7 +86,6 @@ echo 'Números impares de un solo dígito desde xrange(): '; foreach (xrange(1, 9, 2) as $number) { echo "$number "; } -?> ]]> &example.outputs; @@ -166,7 +165,6 @@ $generator = gen_one_to_three(); foreach ($generator as $value) { echo "$value\n"; } -?> ]]> &example.outputs; @@ -231,7 +229,6 @@ foreach (input_parser($input) as $id => $fields) { echo " $fields[0]\n"; echo " $fields[1]\n"; } -?> ]]> &example.outputs; @@ -271,7 +268,6 @@ function gen_three_nulls() { } var_dump(iterator_to_array(gen_three_nulls())); -?> ]]> &example.outputs; @@ -322,7 +318,6 @@ function &gen_reference() { foreach (gen_reference() as &$number) { echo (--$number).'... '; } -?> ]]> &example.outputs; @@ -388,7 +383,6 @@ function gen() { } // establece en false el segundo parámetro para obtener un array [0, 1, 2, 3, 4] var_dump(iterator_to_array(gen())); -?> ]]> &example.outputs; @@ -434,7 +428,6 @@ function eight() { foreach (count_to_ten() as $num) { echo "$num "; } -?> ]]> &example.outputs; @@ -478,7 +471,6 @@ foreach ($gen as $num) { echo "$num "; } echo $gen->getReturn(); -?> ]]> &example.outputs; @@ -503,7 +495,7 @@ echo $gen->getReturn(); - + fileHandle); } } -?> ]]> diff --git a/language/references.xml b/language/references.xml index c98ca1ed9..ae651da73 100644 --- a/language/references.xml +++ b/language/references.xml @@ -1,10 +1,10 @@ - + - + Las referencias ¿Qué es una referencia? @@ -45,13 +45,10 @@ En este primer caso, las referencias PHP permiten que dos variables referencien el mismo contenido. Por ejemplo: - + ]]> @@ -87,8 +84,6 @@ var_dump(array_key_exists('b', $b)); // bool(true) $c = new stdClass(); foo($c->d); var_dump(property_exists($c, 'd')); // bool(true) - -?> ]]> @@ -98,13 +93,10 @@ var_dump(property_exists($c, 'd')); // bool(true) La misma sintaxis puede ser utilizada con las funciones que devuelven referencias: - + ]]> @@ -126,7 +118,6 @@ $foo =& find_var($bar); ]]> @@ -165,7 +154,6 @@ echo "var2 está definido como '$var2'\n"; // var2 está definido como 'Variable ]]> @@ -191,7 +177,6 @@ echo $ref; // 3 - el último elemento del array iterado +var_dump($a); +var_dump($b); ]]> @@ -221,6 +206,7 @@ $a = 1; $b =& $a; $c = $b; $c = 7; // $c no es una referencia; no hay cambio en $a o $b +print "a = {$a}; b = {$b}; c = {$c}\n\n"; /* Asignación de variables de tipo array */ $arr = array(1); @@ -229,8 +215,9 @@ $arr2 = $arr; // NO es una asignación por referencia! $arr2[0]++; /* $a == 2, $arr == array(2) */ /* ¡Los contenidos de $arr son cambiados aunque no fuera una referencia! */ - -?> +print "a = {$a}\n"; +var_dump($arr); +var_dump($arr2); ]]> @@ -252,14 +239,14 @@ $arr2[0]++; +$a = 5; +foo($a); +print $a; ]]> @@ -288,17 +275,15 @@ foo($a); son punteros. Esto significa que el script siguiente no hará lo que se espera: - + ]]> @@ -327,16 +312,14 @@ foo($bar); +$a = 5; +foo($a); +print $a; // $a vale 6 ahora ]]> @@ -364,10 +347,10 @@ foo ($a); ]]> @@ -394,7 +375,7 @@ foo(bar()); referencia, ya que el resultado será indefinido. Por ejemplo, los siguientes pasos por referencia son inválidos: - + ]]> @@ -442,7 +422,6 @@ foo(new Foobar()) // Produce una notificación desde PHP 7.0.7 getValue(); // $myValue es una referencia de $obj->value, que vale 42. $obj->value = 2; echo $myValue; // muestra el nuevo valor de $obj->value, es decir, 2. - -?> ]]> @@ -505,14 +482,17 @@ $collection = &collector(); $collection[] = 'foo'; print_r(collector()); -// Array -// ( -// [0] => foo -// ) - -?> ]]> + &example.outputs; + + foo +) +]]> + @@ -525,7 +505,7 @@ print_r(collector()); Para pasar la referencia devuelta a otra función que espera una referencia, se puede utilizar la siguiente sintaxis: - + ]]> @@ -560,12 +538,11 @@ array_push(collector(), 'foo'); +var_dump($a); +var_dump($b); ]]> @@ -595,13 +572,10 @@ unset($a); se crea en realidad una referencia a una variable global. En otras palabras, esto es lo mismo que: - + ]]>