stringtranslate.com

Sintaxis y semántica de PHP

La sintaxis y la semántica de PHP , un lenguaje de programación , forman un conjunto de reglas que definen cómo se puede escribir e interpretar un programa PHP.

Descripción general

Históricamente, el desarrollo de PHP ha sido algo desordenado. Para contrarrestar esto, PHP Framework Interop Group (FIG) ha creado los documentos PHP Standards Recommendation (PSR) que han ayudado a lograr una mayor estandarización del lenguaje desde 2009. [1] Los estándares de codificación modernos están contenidos en PSR-1 (Codificación básica Estándar) [2] y PSR-2 (Guía de estilo de codificación). [3]

Palabras clave

Algunas palabras clave representan cosas que parecen funciones, otras parecen constantes, pero en realidad son construcciones del lenguaje. Está prohibido utilizar palabras clave como constantes, nombres de clases, funciones o métodos. Está permitido usarlos como nombres de variables, pero puede resultar confuso. [4]

Construcciones básicas del lenguaje

PHP generalmente sigue la sintaxis de C , con excepciones y mejoras para su uso principal en el desarrollo web , que hace un uso intensivo de la manipulación de cadenas . Las variables PHP deben tener el prefijo " $". Esto permite a PHP realizar interpolación de cadenas en cadenas entre comillas dobles , donde se admite la barra invertida como carácter de escape . No se realiza ningún escape ni interpolación en cadenas delimitadas por comillas simples . PHP también admite una función sprintf similar a C. El código se puede modularizar en funciones definidas con palabra clave function. PHP admite un estilo de codificación opcional orientado a objetos , con clases indicadas por la classpalabra clave. Las funciones definidas dentro de las clases a veces se denominan métodos . Las estructuras de control incluyen: if, while, do/while, for, foreachy switch. Las declaraciones terminan con un punto y coma, no con finales de línea. [5]

Delimitadores

El procesador PHP sólo analiza el código dentro de sus delimitadores . Todo lo que esté fuera de sus delimitadores se envía directamente a la salida y PHP no lo analiza. Los únicos delimitadores de apertura/cierre permitidos por PSR-1 [6] son ​​" <?php" y " ?>" o y .<?=?>

El propósito de las etiquetas delimitadoras es separar el código PHP de los datos que no son PHP (principalmente HTML). Aunque es poco común en la práctica, PHP ejecutará código incrustado en cualquier archivo pasado a su intérprete, incluidos archivos binarios como archivos PDF o JPEG, o en archivos de registro del servidor. [7] [8] Todo lo que esté fuera de los delimitadores es ignorado por el analizador PHP y se pasa como salida. [9]

Estos delimitadores recomendados crean XHTML y otros documentos XML con el formato correcto . [10] Esto puede ser útil si los documentos del código fuente alguna vez necesitan procesarse de otras maneras durante la vida útil del software.

Si la validación XML adecuada no es un problema y un archivo contiene solo código PHP, es preferible omitir la ?>etiqueta de cierre PHP () al final del archivo. [11]

Se pueden utilizar otros delimitadores en algunos servidores, aunque la mayoría ya no son compatibles. [12] Algunos ejemplos son:

Variables y comentarios

Las variables tienen como prefijo un símbolo de dólar y no es necesario especificar un tipo de antemano. A diferencia de los nombres de funciones y clases, los nombres de variables distinguen entre mayúsculas y minúsculas. Tanto las cadenas entre comillas dobles ( "") como las heredoc permiten incrustar el valor de una variable en la cadena. [13] Al igual que en C, las variables se pueden convertir a un tipo específico anteponiendo el tipo entre paréntesis. PHP trata las nuevas líneas como espacios en blanco , a la manera de un lenguaje de formato libre . El operador de concatenación es .(punto). Se accede a los elementos de la matriz y se configuran entre corchetes tanto en matrices asociativas como en matrices indexadas. Las llaves se pueden utilizar para acceder a elementos de una matriz, pero no para asignarlos.

PHP tiene tres tipos de sintaxis de comentarios : /* */que sirven como comentarios en bloque y que //también #se utilizan para comentarios en línea. [14] Muchos ejemplos utilizan la printfunción en lugar de la echofunción. Ambas funciones son casi idénticas; la principal diferencia es que printes más lento echoporque el primero devolverá un estado que indica si tuvo éxito o no además del texto para generar, mientras que el segundo no devuelve un estado y solo devuelve el texto para generar. [15]

programa mas simple

El ejemplo habitual de código " Hola mundo " para PHP es: [16]

<?php echo  "¡Hola mundo! \n " ; ?>

El ejemplo anterior genera lo siguiente:

¡Hola Mundo!

En lugar de usar <?phpy la echodeclaración, un "atajo" opcional es el uso de en lugar de cual hace eco implícitamente de los datos. Por ejemplo:<?=<?php

<!DOCTYPE html><html> < cabeza > < título > PHP "¡Hola mundo!" programa </ título > </cabeza> < cuerpo > < p > <? = "¡Hola mundo!" ? > </p> </cuerpo></html>

El ejemplo anterior también ilustra que el texto que no esté contenido en las etiquetas PHP adjuntas se generará directamente.

Operadores

PHP admite: operadores aritméticos , operadores de asignación , operadores bit a bit , operadores de comparación , operadores de control de errores, operadores de ejecución, operadores de incremento/decremento , operadores lógicos , operadores de cadena , operadores de matriz, operadores de asignación condicional . [17]

Estructuras de Control

Condicionales

Si... otra declaración

La sintaxis de una declaración PHP if... else es la siguiente:

if  ( condición )  {  // declaraciones; }  elseif  ( condición2 )  {  // declaraciones; }  else  {  // declaraciones; }

Para declaraciones individuales, se pueden omitir los corchetes y, opcionalmente, condensarlos en una sola línea:

si  ( condición )  hacer algo (); elseif  ( condición2 )  hacer algo más (); else  doyetatercera cosa ();

Operador condicional ternario

$abs  =  $valor  >=  0  ?  $valor  :  - $valor ;/* Equivalente a */if  ( $valor  >=  0 )  {  $abs  =  $valor ; }  más  {  $abs  =  - $valor ; }
operador de elvis

Desde PHP 5.3 soporta el operador Elvis ( ?:) en el que es posible omitir la parte media del operador ternario.

$c  =  $a  ?:  $b ; /* Equivalente a */$c  =  $a  ?  $a  :  $b ;
Operador coalescente nulo

Desde la versión 7.0, PHP también admite el operador coalescente nulo ( ??).

$a  =  $b  ??  $c ;/* Equivalente a */$a  =  isset ( $b )  ?  $b  :  $c ;

Desde la versión 7.4, PHP también admite el operador coalescente nulo con la ??=sintaxis.

$a  ??=  $b ;/* Equivalente a */$a  =  $a  ??  $b ;
Operador de navegación segura

Desde la versión 8.0 PHP también soporta el operador de navegación segura ( ?->).

$variable  =  $objeto ?-> método ();/* Equivalente a */$variable  =  $objeto  !==  nulo  ?  $objeto -> método ()  :  nulo ;

Declaración de cambio

Un ejemplo de la sintaxis de una declaración de cambio de PHP es el siguiente:

switch  ( expr )  {  caso  0 :  // declaraciones;  romper ;  caso  1 :  // declaraciones;  romper ;  caso  2 :  // declaraciones;  romper ;  predeterminado :  // declaraciones; }

Tenga en cuenta que, a diferencia de C , los valores en la declaración case pueden ser de cualquier tipo, no solo números enteros. [18]

Expresión de coincidencia

PHP 8 introduce la matchexpresión. [19] La expresión de coincidencia es conceptualmente similar a una switchdeclaración y es más compacta para algunos casos de uso. [20]switch las declaraciones son tradicionalmente preferidas para comparaciones simples basadas en valores; matchlas declaraciones proporcionan más flexibilidad y legibilidad, particularmente cuando se usan en condiciones o patrones complejos [21]

 coincidencia  de eco ( 1 )  {  0  =>  'Foo' ,  1  =>  'Bar' ,  2  =>  'Baz' , }; // barra

Bucles

En bucle

La sintaxis PHP de un bucle for es la siguiente:

for  ( inicialización ;  condición ;  ocurrencia tardía )  {  // declaraciones; }

Mientras bucle

La sintaxis para un bucle while de PHP es la siguiente:

mientras  ( condición )  {  // declaraciones; }

Hacer bucle while

La sintaxis para un bucle PHP do while es la siguiente:

hacer  {  // declaraciones; }  mientras  ( condición );

Para cada bucle

La sintaxis de PHP para cada bucle es la siguiente:

foreach  ( $establecido  como  $valor )  {  // declaraciones; }

Sintaxis alternativa para estructuras de control.

PHP ofrece una sintaxis alternativa que utiliza dos puntos en lugar de la sintaxis estándar de llaves (de " {...}"). Esta sintaxis afecta a las siguientes estructuras de control: if, while, for, foreachy switch. La sintaxis varía sólo ligeramente de la sintaxis de llaves. En cada caso, la llave de apertura ( {) se reemplaza con dos puntos ( :) y la llave de cierre se reemplaza con endif;, endwhile;, endfor;, endforeach;o endswitch;, respectivamente. [22] No se admite la mezcla de estilos de sintaxis dentro del mismo bloque de control. Un ejemplo de sintaxis para una declaración if/ elseifes el siguiente:

if  ( condición ) :  // codifica aquí elseif  ( condición ) :  // codifica aquí else :  // codifica aquí endif ;

Este estilo a veces se denomina sintaxis de plantilla, ya que a menudo resulta más fácil de leer cuando se combinan PHP y HTML o JavaScript para salida condicional:

< html > <?php  if  ( $day  ==  'Jueves' ) :  ?>  < div > ¡Mañana es viernes! </ div > <?php  elseif  ( $día  ==  'Viernes' ) :  ?>  < div > TGIF </ div > <?php  else :  ?>  < div > ugh </ div > <?php  endif ;  ? > </html>

Manejo de excepciones

El método de manejo de excepciones en tiempo de ejecución en PHP se hereda de C++. [23]

función  inv ( $x ) {  if  ( $x  ==  0 )  {  lanzar  nueva  excepción ( "División por cero" );  }  devolver  1  /  $x ; }prueba  {  echo  inv ( 2 );  // imprime 0,5  echo  inv ( 0 );  // lanza una excepción  echo  inv ( 5 );  // no se ejecutará }  catch  ( Excepción  $e )  {  echo  $e -> getMessage ();  // imprime División por cero }// Continuar la ejecución echo  "Hola" ;  // imprime Hola

Tipos de datos

tipos escalares

PHP admite cuatro tipos escalares: bool, int, float, string. [24]

Booleano

PHP tiene un tipo booleano nativo , llamado " bool", similar a los tipos booleanos nativos en Java y C++ . Usando las reglas de conversión de tipos booleanos, los valores distintos de cero se interpretan como truey el cero como false, como en Perl . Ambas son constantes truey falseno distinguen entre mayúsculas y minúsculas. [25]

Entero

PHP almacena números enteros en un rango que depende de la plataforma. Este rango suele ser el de enteros con signo de 32 o 64 bits. [26] Las variables enteras se pueden asignar usando notaciones decimales (positivas y negativas), octales , hexadecimales y binarias .

$a  =  1234 ;  // numero decimal $b  =  0321 ;  // número octal (equivalente a 209 decimal) $c  =  0x1B ;  // número hexadecimal (equivalente a 27 decimal) $d  =  0 b11 ;  // número binario (equivalente a 3 decimal) $e  =  1 _234_567 ;  // número decimal (a partir de PHP 7.4.0)

Flotar

Los números reales también se almacenan en un rango específico de la plataforma. Se pueden especificar utilizando notación de punto flotante o dos formas de notación científica . [27]

$a  =  1,234 ; $b  =  1.2e3 ;  // 1200 $c  =  7E-5 ;  // 0.00007 $d  =  1 _234 . 567 ;  // a partir de PHP 7.4.0

Cadena

Admite PHP strings, que se puede usar con comillas simples, comillas dobles, sintaxis nowdoc o heredoc . [28]

Las cadenas entre comillas dobles admiten la interpolación de variables:

$edad  =  '23' ;echo  "John tiene $edad años" ;  // Juan tiene 23 años

Sintaxis de llaves: [29]

$f  =  "sqrt" ; $x  =  25 ;echo  "a $xc \n " ;  // Advertencia: Variable no definida $xc echo  "a { $x } c \n " ;  // imprime a25c echo  "a ${ x } c \n " ;  // también imprime a25cecho  " $f ( $x ) es { $f ( $x ) } \n " ;  // imprime sqrt(25) es 5

tipos especiales

PHP admite dos tipos especiales: null, resource. El nulltipo de datos representa una variable que no tiene valor. El único valor en el nulltipo de datos es NULL . La constante NULL no distingue entre mayúsculas y minúsculas. [30] Las variables del resourcetipo " " representan referencias a recursos de fuentes externas. Por lo general, estos se crean mediante funciones de una extensión particular y solo pueden ser procesados ​​por funciones de la misma extensión. Los ejemplos incluyen recursos de archivos, imágenes y bases de datos. [24]

tipos compuestos

PHP admite cuatro tipos compuestos: array, object, callable, iterable.

Formación

Las matrices pueden contener elementos mixtos de cualquier tipo, incluidos recursos y objetos. [31] Las matrices multidimensionales se crean asignando matrices como elementos de matriz. PHP no tiene un tipo de matriz verdadero. Las matrices PHP son nativamente dispersas y asociativas . Las matrices indexadas son simplemente hashes que utilizan números enteros como claves.

Matriz indexada:

$temporada  =  [ "Otoño" ,  "Invierno" ,  "Primavera" ,  "Verano" ];  echo  $temporada [ 2 ];  // Primavera

Matriz asociativa:

$salario  =  [ "Alex"  =>  34000 ,  "Bill"  =>  43000 ,  "Jim"  =>  28000 ];  echo  $salario [ "Factura" ];  // 43000

Matriz multidimensional:

$mark  =  [  "Alex"  =>  [  "biología"  =>  73 ,  "historia"  =>  85  ],  "Jim"  =>  [  "biología"  =>  86 ,  "historia"  =>  92  ] ];echo  $marca [ "Jim" ][ "historia" ];  // 92

Objeto

El objecttipo de datos es una combinación de variables, funciones y estructuras de datos en el paradigma de programación orientada a objetos .

clase  Persona {  //... }$persona  =  nueva  Persona ();

invocable

Desde la versión 5.3 PHP tiene funciones de primera clase que pueden usarse, por ejemplo, como argumento para otra función.

 corredor de función ( $función invocable  , mixta ... $args ) { return $función ( ... $args ); }    $f  =  fn ( $x ,  $y )  =>  $x  **  $y ;función  suma ( int | float  ... $args ) {  return  array_sum ( $args ); } corredor de eco ( fn ( $x )  =>  $x  **  2 ,  2 );  // imprime 4 corredores de eco  ( $f , 2 , 3 ); // imprime 8 echo runner ( 'suma' , 1 , 2 , 3 , 4 ); // imprime 10         

iterable

IterableEl tipo indica que la variable se puede utilizar con foreachel bucle. [32] Puede ser cualquier objeto arrayo generatorque implemente la interfaz interna especial Traversable[33] .

función  imprimirCuadrados ( iterable  $datos ) {  foreach  ( $datos  como  $valor )  {  echo  ( $valor  **  2 )  .  " " ;  } eco  " \n " ; }// matriz $matriz  =  [ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 ,  10 ];// generador $generador  =  función  () :  Generador  {  para  ( $i  =  1 ;  $i  <=  10 ;  $i ++ )  {  rendimiento  $i ;  } };// objeto $arrayIterator  =  nuevo  ArrayIterator ([ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 ,  10 ]);imprimirCuadrados ( $matriz );  // 1 4 9 16 25 36 49 64 81 100 imprimirCuadrados ( $generador ());  // 1 4 9 16 25 36 49 64 81 100 imprimirCuadrados ( $arrayIterator );  // 1 4 9 16 25 36 49 64 81 100

Tipos de unión

Los tipos de unión se introdujeron en PHP 8.0 [34]

función  foo ( cadena | int  $foo ) :  cadena | En t  {}

Funciones

PHP tiene cientos de funciones base y miles más de extensiones. Antes de la versión 5.3.0 de PHP, las funciones no eran funciones de primera clase y solo se podía hacer referencia a ellas por su nombre, mientras que PHP 5.3.0 introduce cierres. [35] Las funciones definidas por el usuario se pueden crear en cualquier momento y sin necesidad de crear prototipos. [35] Las funciones se pueden definir dentro de bloques de código, lo que permite una decisión en tiempo de ejecución sobre si se debe definir o no una función. No existe el concepto de funciones locales. Las llamadas a funciones deben utilizar paréntesis con la excepción de las funciones constructoras de clases sin argumentos llamadas con el newoperador PHP, donde los paréntesis son opcionales.

Una definición de función de ejemplo es la siguiente:

función  hola ( $objetivo = 'Mundo' ) {  echo  "¡Hola $objetivo ! \n " ; }Hola ();  // genera "¡Hola mundo!" hola ( 'Wikipedia' );  // genera "¡Hola Wikipedia!"

Las llamadas a funciones se pueden realizar a través de variables, donde el valor de una variable contiene el nombre de la función a llamar. Esto se ilustra en el siguiente ejemplo:

función  hola () {  return  'Hola' ; }función  mundo () {  return  "¡Mundo!" ; }$función1  =  'hola' ; $función2  =  'mundo' ;echo  " { $función1 () } { $función2 () } " ; 

Se puede asignar un valor predeterminado para los parámetros en la definición de la función, pero antes de PHP 8.0 no se admitían parámetros con nombre ni la omisión de parámetros. [36] Algunos desarrolladores principales de PHP han expresado públicamente su decepción con esta decisión. [37] Otros han sugerido soluciones para esta limitación. [38]

Argumentos nombrados

Los argumentos con nombre se introdujeron en PHP 8.0

función  potencia ( $base ,  $exp ) {  return  $base  **  $exp ; }// Usando argumentos posicionales: echo  power ( 2 ,  3 );  // imprime 8// Usando argumentos con nombre: echo  power ( base :  2 ,  exp :  3 );  // imprime 8 potencias de eco  ( exp : 3 , base : 2 ); // imprime 8    

Declaración de tipo

La especificación de los tipos de parámetros de función y valores de retorno de función se admite desde PHP 7.0. [39]

Declaración de tipo de devolución:

función  suma ( $a ,  $b ) :  flotador  {  retorno  $a  +  $b ; }var_dump ( suma ( 1 ,  2 ));  // imprime flotador(3)

Escritura de parámetros:

función  suma ( int  $a ,  int  $b ) {  return  $a  +  $b ; }var_dump ( suma ( 1 ,  2 ));  // imprime int(3) var_dump ( suma ( 1.6 ,  2.3 ));  // imprime int(3)

Mecanografía estricta

Sin escritura estricta habilitada:

$f1  =  fn  ( $a ,  $b ) :  int  =>  $a  +  $b ; $f2  =  fn  ( int  $a ,  int  $b )  =>  $a  +  $b ;var_dump ( $f1 ( 1.3 ,  2.6 ));  // imprime int(3) var_dump ( $f1 ( 1 ,  '2' ));  // imprime int(3) var_dump ( $f2 ( 1.3 ,  2.6 ));  // imprime int(3) var_dump ( $f2 ( 1 ,  '2' ));  // imprime int(3)

Con escritura estricta habilitada:

declarar ( tipos_estrictos = 1 ); $f1  =  fn  ( $a ,  $b ) :  int  =>  $a  +  $b ; $f2  =  fn  ( int  $a ,  int  $b )  =>  $a  +  $b ;var_dump ( $f1 ( 1.3 ,  2.6 ));  // Error fatal: el valor de retorno debe ser de tipo int, float devolvió var_dump ( $f1 ( 1 ,  '2' ));  // imprime int(3) var_dump ( $f2 ( 1.3 ,  2.6 ));  // Error fatal: el argumento #1 ($a) debe ser de tipo int, float dado var_dump ( $f2 ( 1 ,  '2' ));  // Error fatal: el argumento n.° 2 ($b) debe ser de tipo int, se proporciona la cadena

Funciones anónimas

PHP admite funciones anónimas verdaderas a partir de la versión 5.3. [35] En versiones anteriores, PHP solo admitía funciones casi anónimas a través de la create_function()función.

$x  =  3 ; $func  =  función ( $z )  {  return  $z  *  2 ;  }; eco  $func ( $x );  // imprime 6

Desde la versión 7.4, PHP también admite la sintaxis de funciones de flecha ( =>). [40]

$x  =  3 ; $func  =  fn ( $z )  =>  $z  *  2 ; eco  $func ( $x );  // imprime 6

Cierres

Creando cierres

$agregar  =  fn ( $x )  =>  fn ( $y )  =>  $y  +  $x ;/* Equivalente a */$agregar  =  función  ( $x )  {  función de retorno  ( $y ) uso ( $x ) { retorno $y + $x ; }; };         

usando

$f  =  $añadir ( 5 );eco  $f ( 3 );  // imprime 8 echo  $add ( 2 )( 4 );  // imprime 6

PHP

A PHP no le importan los tipos de argumentos variables a menos que el argumento esté escrito.

función  suma ( ... $nums ) :  int {  return  array_sum ( $nums ); } suma de eco ( 1 ,  2 ,  3 );  // 6

Y argumentos variados escritos:

función  suma ( int  ... $nums ) :  int {  return  array_sum ( $nums ); } suma de eco ( 1 ,  'a' ,  3 );  // TypeError: el argumento 2 pasado a sum() debe ser del tipo int (desde PHP 7.3)

Generadores

Usando generadores, podemos escribir código que use foreach para iterar sobre un conjunto de datos sin tener que crear una matriz en la memoria, lo que puede resultar en una sobrecarga de memoria o un tiempo de procesamiento significativo para la generación.

Objetos

La funcionalidad básica de programación orientada a objetos se agregó en PHP 3. [41] El manejo de objetos se reescribió completamente para PHP 5, ampliando el conjunto de funciones y mejorando el rendimiento. [42] En versiones anteriores de PHP, los objetos se manejaban como tipos primitivos . [42] El inconveniente de este método era que todo el objeto se copiaba cuando se asignaba o pasaba una variable como parámetro a un método. En el nuevo enfoque, se hace referencia a los objetos por identificador y no por valor. PHP 5 introdujo variables y métodos miembros privados y protegidos, junto con clases abstractas y clases finales , así como métodos abstractos y métodos finales . También introdujo una forma estándar de declarar constructores y destructores , similar a la de otros lenguajes orientados a objetos como C++ , y un modelo estándar de manejo de excepciones . Además, PHP 5 agregó interfaces y permite implementar múltiples interfaces. Existen interfaces especiales que permiten que los objetos interactúen con el sistema de ejecución. Los objetos que implementan ArrayAccess se pueden usar con sintaxis de matriz y los objetos que implementan Iterator o IteratorAggregate se pueden usar con la construcción del lenguaje foreach . El método estático y las funciones de variable de clase en Zend Engine 2 no funcionan como algunos esperarían. No hay ninguna función de tabla virtual en el motor, por lo que las variables estáticas se vinculan con un nombre en lugar de una referencia en el momento de la compilación. [43]

Este ejemplo muestra cómo definir una clase Fooque hereda de la clase Bar. El método myStaticMethodes un método estático público que se puede llamar con Foo::myStaticMethod();.

clase  Foo  extiende  Bar {  function  __construct ()  {  $doo  =  "wah dee dee" ;  }  función estática  pública myStaticMethod () { $dee = "dee dee dum" ; } }      

Si el desarrollador crea una copia de un objeto usando la palabra reservada clonar , el motor Zend verificará si __clone()se ha definido un método o no. De lo contrario, llamará a un valor predeterminado __clone()que copiará las propiedades del objeto. Si se define un __clone()método, será responsable de establecer las propiedades necesarias en el objeto creado. Para mayor comodidad, el motor proporcionará una función que importa las propiedades del objeto fuente, de modo que el programador pueda comenzar con una réplica por valor del objeto fuente y solo anular las propiedades que deben cambiarse. [44]

Rasgos

Este ejemplo utiliza un rasgo para mejorar otras clases:

// El rasgo de plantilla  TSingleton {  private  static  $_instance  =  null ;  función  privada __construct ()  {}  // Debe tener un constructor privado predeterminado y tener cuidado de no abrirlo en la clase  función estática  pública getInstance () { if ( null === self :: $_instance ) { self :: $_instance = new self (); }             devolver  uno mismo :: $_instancia ;  } }clase  FrontController {  use  TSingleton ; }// También se puede utilizar en clases ya extendidas class  WebSite  extends  SomeClass {  use  TSingleton ; }

Esto permite simular aspectos de la herencia múltiple:

rasgo  TBounding {  public  $x ,  $y ,  $ancho ,  $alto ; }rasgo  TMoveable {  función pública  moverA ( $x , $y ) { //… } }     rasgo  TResizeable {  cambio de tamaño de función pública  ( $ nuevo ancho , $ nuevo alto ) { //… } }     clase  Rectángulo {  use  TBounding ,  TMoveable ,  TResizeable ;  función  pública fillColor ( $color )  {  //…  } }

Ver también

Referencias

  1. ^ PSR-¿Eh?
  2. ^ PSR-1
  3. ^ PSR-2
  4. ^ PHP: Lista de palabras clave - Manual
  5. ^ "Separación de instrucciones". El grupo PHP . Consultado el 16 de marzo de 2008 .
  6. ^ "PSR-1: Estándar de codificación básica - PHP-FIG".
  7. ^ "Inyección de código: un virus PHP simple incluido en una imagen JPEG".
  8. ^ Joven, Susan; Aitel, Dave (24 de noviembre de 2003). El manual del hacker: la estrategia detrás de la irrupción y defensa de las redes. ISBN 9780203490044.
  9. ^ "Su primera página habilitada para PHP". El grupo PHP . Consultado el 25 de febrero de 2008 .
  10. ^ Rebuzno, Tim; et al. (26 de noviembre de 2008). "Instrucciones de procesamiento". Lenguaje de marcado extensible (XML) 1.0 (quinta edición) . W3C . Consultado el 18 de junio de 2009 .
  11. ^ "Etiquetas PHP".
  12. ^ "PHP: sintaxis básica". El grupo PHP . Consultado el 22 de febrero de 2008 .
  13. ^ "Variables". El grupo PHP . Consultado el 16 de marzo de 2008 .
  14. ^ "Comentarios". El grupo PHP . Consultado el 16 de marzo de 2008 .
  15. ^ "imprimir". El grupo PHP . Consultado el 16 de marzo de 2008 .
  16. ^ "Hola mundo". Novato en código . Consultado el 25 de febrero de 2008 .
  17. ^ "PHP: Operadores - Manual". El grupo PHP . Consultado el 30 de enero de 2021 .
  18. ^ "PHP: Cambiar - Manual".
  19. ^ Redmond, Paul. "Match Expression llegará a PHP 8". Noticias de Laravel . Consultado el 4 de octubre de 2020 .
  20. ^ "PHP 8.0: expresiones coincidentes". Reloj PHP . Consultado el 4 de octubre de 2020 .
  21. ^ "Combinar o cambiar en PHP". Fuente tecnológica . Consultado el 27 de julio de 2024 .
  22. ^ "Sintaxis alternativa para estructuras de control". El grupo PHP . Consultado el 16 de abril de 2010 .
  23. ^ "PHP: Excepciones - Manual". El grupo PHP . Consultado el 30 de enero de 2021 .
  24. ^ ab "Tipos". El grupo PHP . Consultado el 16 de marzo de 2008 .
  25. ^ "Booleanos". El grupo PHP . Consultado el 22 de enero de 2021 .
  26. ^ PHP: Enteros - Manual
  27. ^ "Números de coma flotante". El grupo PHP . Consultado el 22 de enero de 2021 .
  28. ^ "Cuerdas". El grupo PHP . Consultado el 21 de marzo de 2008 .
  29. ^ "Sintaxis compleja (rizada)". El grupo PHP . Consultado el 30 de enero de 2021 .
  30. ^ NULO
  31. ^ "Matrices". El grupo PHP . Consultado el 22 de enero de 2021 .
  32. ^ PHP: Iterables - Manual
  33. ^ PHP: transitable - Manual
  34. ^ PHP RFC: tipos de unión 2.0
  35. ^ a b C "Funciones". El grupo PHP . Consultado el 16 de marzo de 2008 .
  36. ^ "Elementos eliminados de PHP 6". El grupo PHP . Consultado el 9 de enero de 2009 .
  37. ^ "Sintaxis que extraño en PHP". Stanislav Malyshev, Zend Technologies, Ltd. Consultado el 9 de enero de 2009 .
  38. ^ "Parámetros PHP omitidos y con nombre". SEO Egghead Inc. Consultado el 9 de enero de 2009 .
  39. ^ "PHP: Declaraciones de tipo - Manual". El grupo PHP . Consultado el 28 de febrero de 2021 .
  40. ^ PHP RFC: Funciones de flecha 2.0
  41. ^ "Historia de PHP y proyectos relacionados". El grupo PHP . Consultado el 25 de febrero de 2008 .
  42. ^ ab "Referencias de objetos PHP 5". mjtsai . Consultado el 16 de marzo de 2008 .
  43. ^ "Clases y objetos (PHP 5)". El grupo PHP . Consultado el 16 de marzo de 2008 .
  44. ^ "Clonación de objetos". El grupo PHP . Consultado el 16 de marzo de 2008 .