PHP es un lenguaje de cdigo abierto muy popular especialmente adecuado para
el desarrollo web y que puede ser incrustado en HTML. Bien, pero qu significa realmente? Un ejemplo nos aclarar las cosas: Ejemplo #1 Un ejemplo introductorio <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo</title> </head> <body>
<?php echo "Hola, soy un script de PHP!"; ?>
</body> </html> En lugar de usar muchos comandos para abrir HTML (como en C o en Perl), las pginas de PHP contienen HTML con cdigo incrustado que hace "algo" (en este caso, mostrar "Hola, soy un script de PHP!). El cdigo de PHP est encerrado entre las etiquetas especiales de comienzo y final <? php y?> que permiten entrar y salir del "modo PHP". Lo que distingue a PHP de algo como JavaScript del lado del cliente es que el cdigo es ejecutado en el servidor, generando HTML y envindolo al cliente. El cliente recibir el resultado de ejecutar el script, aunque no se sabra el cdigo subyacente que era. El servidor web puede ser incluso configurado para que procese todos los ficheros HTML con PHP, por lo que no hay manera de que los usuarios puedan saber qu se tiene debajo de la manga. Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez ofrece muchas caractersticas avanzadas para los programadores profesionales. No sienta miedo de leer la larga lista de caractersticas de PHP. En unas pocas horas podr empezar a escribir sus primeros scripts. PHP es un lenguaje de programacin de uso general de cdigo del lado del servidor originalmente diseado para el desarrollo web de contenido dinmico. Fue uno de los primeros lenguajes de programacin del lado del servidor que se podan incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. Puede ser usado en la mayora de los servidores web al igual que en casi todos los sistemas operativos y plataformas sin ningn costo.
Estructura Bsica de PHP
class La definicin bsica de clases comienza con la palabra clave class, seguido por un nombre de clase, continuado por un par de llaves que encierran las definiciones de las propiedades y mtodos pertenecientes a la clase. El nombre de clase puede ser cualquier etiqueta vlida que no sea una palabra reservada de PHP. Un nombre vlido de clase comienza con una letra o un guin bajo, seguido de la cantidad de letras, nmeros o guiones bajos que sea. Como una expresin regular, se expresara de la siguiente forma: ^[a-zA-Z_\x7f-\xff][a- zA-Z0-9_\x7f-\xff]*$. Una clase puede tener sus propias constantes, variables (llamadas "propiedades"), y funciones (llamadas "mtodos"). Ejemplo #1 Definicin simple de una clase <?php class SimpleClass { // Declaracin de la propiedad public $var = 'a default value';
// Declaracin del mtodo public function displayVar() { echo $this->var; } } ?> La pseudo-variable $this est disponible cuando un mtodo es invocado dentro del contexto de un objeto.$this es una referencia del objeto que invoca (usualmente el objeto al que el mtodo pertenece, pero posiblemente sea otro objeto, si el mtodo es llamado estticamente desde el contexto de un objeto secundario). Ejemplo #2 Algunos ejemplo de la pseudo-variable $this <?php class A { function foo() { if (isset($this)) { echo '$this est definida ('; echo get_class($this); echo ")\n"; } else { echo "\$this no est definida.\n"; } } }
class B { function bar() { // Nota: la siguiente lnea arrojar un Warning si E_STRICT est habilitada. A::foo(); } }
$a = new A(); $a->foo();
// Nota: la siguiente lnea arrojar un Warning si E_STRICT est habilitada. A::foo(); $b = new B(); $b->bar();
// Nota: la siguiente lnea arrojar un Warning si E_STRICT est habilitada. B::bar(); ?> El resultado del ejemplo sera: $this est definida (A) $this no est definida. $this est definida (B) $this no est definida. new Para crear una instancia de una clase, la palabra clave new debe ser usada. Un objeto siempre se crear a menos que el objeto tenga un constructor que arroje una excepcin en caso de error. Las clases deberan ser definidas antes de la instanciacin (y en algunos casos esto es un requerimiento). Si un string que contiene el nombre de una clase se usa con new, una nueva instancia de esa clase ser creada. Si la clase est en un espacio de nombres, su nombre completo debe ser usado cuando se hace esto. Ejemplo #3 Creacin de una instancia <?php $instance = new SimpleClass();
// Esto tambin se puede hacer con variables: $className = 'Foo'; $instance = new $className(); // Foo() ?> En el contexto de una clase, es posible crear un nuevo objeto con new self y new parent. Cuando se asigna una instancia de una clase ya creada a una nueva variable, sta ltima acceder a la misma instancia como al objeto que le fue asignado. Esta conducta es la misma cuando se pasan instancias a una funcin. Una copia de un objeto ya creado se puede lograr a travs de la clonacin de la misma. Ejemplo #4 Asignacin de objetos <?php
$instance = new SimpleClass();
$assigned = $instance; $reference =& $instance;
$instance->var = '$assigned tendr este valor';
$instance = null; // $instance y $reference se transforman en null
var_dump($instance); var_dump($reference); var_dump($assigned); ?> El resultado del ejemplo sera: NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned tendr este valor" } PHP 5.3.0 introdujo un par de nuevas maneras para crear instancias de un objeto: Ejemplo #5 Creando nuevos objetos <?php class Test { static public function getNew() { return new static; } }
class Child extends Test {}
$obj1 = new Test(); $obj2 = new $obj1; var_dump($obj1 !== $obj2);