GuĂa PHP Por: Reyes Tovar Selene Villavicencio Ortega Victor Taurino
Atributo
Un atributo es una característica de un objeto. Mediante los atributos se define información oculta dentro de un objeto, la cual es manipulada solamente por los métodos definidos sobre dicho objeto. Cada atributo está asociado a un tipo de dato, que puede ser simple (entero, real, lógico, carácter, string) o estructurado (arreglo, registro, archivo, lista, etc.)
Código
<?php
class Usuario {
public $usuario;
public $nombre;
public $password; }
$atributos = new Usuario;
$atributos->usuario = 'Juan';
$atributos->nombre = 'Torres';
$atributos->password = 'Juan1234';
echo "<h2>Estos son atributos</h2>"; echo "El nombre del usuario es: "; echo $atributos>usuario; echo "<br>"; echo "El nombre del usuario es: "; echo $atributos->nombre; echo "<br>"; echo "El password del usuario es: "; echo $atributos->password;
?>
Ejecuci贸n
Métodos
Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los métodos constituyen la secuencia de acciones que implementan las operaciones sobre los objetos. La implementación de los métodos no es visible fuera de objeto.
La sintaxis algorítmica de los métodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de estas dos sintaxis:
<Modo de Acceso> Función <Nombre> [(Lista Parámetros)]: <Descripción del Tipo de datos>
Para acciones:
<Modo de Acceso> Acción <Nombre> [(Lista Parámetros)] donde los parámetros son opcionales
Código
<?php
class Usuario {
public $usuario;
public $apellido;
public $password; public function saludar() {
echo "<h2> Método </h2>";
echo 'Hola '.$this->usuario.' '.$this->apellido;
echo "<br>";
echo 'Tu contraseña es : '.$this->password; }
}
Ejecuci贸n
THIS
Dentro de un método, la variable $this hace referencia al objeto sobre el que invocamos el método. En la invocación $micaja->introduce("algo") se está llamando al método introduce sobre el objeto $micaja. Cuando se está ejecutando ese método, se vuelca el valor que recibe por parámetro en el atributo contenido. En ese caso $this->contenido hace referencia al atributo contenido del objeto $micaja, que es sobre el que se invocaba el método.
Código
Para que sea igual al ejemplo debe ser:
<?php
class Caja{
var $contenido;
function introduce($cosa){
$this->contenido = $cosa;
}
functionmuestra_contenido(){
return $this->contenido;
}
}
$micaja = new Caja;
$micaja->introduce("algo");
echo $micaja->muestra_contenido();
?>
Ejecuci贸n
Diferentes formas de pasar argumentos a un método
Hacer que los argumentos sean pasados por referencia
Por defecto, los argumentos de las funciones son pasados por valor (por lo que si el valor del argumento dentro de la función se cambia, no se cambia fuera de la función). Para permitir a una función modificar sus argumentos, éstos deben pasarse por referencia. Para hacer que un argumento a una función sea siempre pasado por referencia hay que poner delante del nombre del argumento el signo (&) en la definición de la función:
Código
<?php
function añadir_algo(&$cadena)
{ $cadena .= 'y algo más.';
}
$cad = 'Esto es una cadena, ';
añadir_algo($cad);
echo $cad;
?>
// imprime 'Esto es una cadena, y algo más.'
Ejecuci贸n
Diferentes formas de pasar argumentos a un mĂŠtodo ď&#x201A;&#x203A; Valores
de argumentos predeterminados
Una funciĂłn puede definir valores predeterminados al estilo C++ para argumentos escalares como sigue:
Código
<?php
function hacercafe($tipo = "capuchino")
{ return "Hacer una taza de $tipo.\n";
}
echo "<h3>Valores de argumentos predeterminados</h3>";
echo hacercafe();
echo "<br>";
echo hacercafe("espresso");
?>
Ejecuci贸n
Devolver un valor desde un método Los
valores son devueltos usando la sentencia opcional RETURN. Se puede devolver cualquier tipo, incluidos arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la línea desde la que fue llamada.
Código
<?php
function cuadrado($núm){ return $núm * $núm /2 * 5;
}
echo "<h3>El Return regresa valores.</h3>";
echo "La operacion que se desarrollo es: 50 * 50 / 2 * 5";
echo "<br>";
echo "El resultado de la operación es: ";
echo cuadrado(50);
?>
Ejecuci贸n
El constructor Los
constructores son funciones en una clase que son invocadas automáticamente cuando se crea una nueva instancia de una clase con new. Una función se vuelve un constructor, cuando tiene el mismo nombre que la clase. Si una clase no tiene constructor, el constructor de la clase base será invocado, si es que existe.
Código <?php class
cliente{
var $nombre;
var $numero;
var $peliculas_alquiladas;
function __construct ($nombre,$numero){
$this->nombre=$nombre;
$this->numero=$numero; $this->peliculas_alquiladas=array();
}
function dame_numero(){ return $this->numero;
}
} //instanciamos
un par de objetos cliente
$cliente1
= new cliente("Jose Luis", 158);
$cliente2
= new cliente("Juan Jesus", 564);
//mostramos
el numero de cada cliente creado
echo
"<h3>El identificador del cliente 1 es: " . $cliente1->dame_numero();
echo
"<br>";
echo
"El identificador del cliente 2 es: " . $cliente2->dame_numero();
echo
"</h3>";
?>
Ejecuci贸n
Herecia La
herencia significa que se pueden crear nuevas clases partiendo de clases existentes, que tendrá todos los atributos y los métodos de su 'superclase' o 'clase padre' y además se le podrán añadir otros atributos y métodos propios.
En
PHP, a diferencia de otros lenguajes orientados a objetos (C++), una clase sólo puede derivar de una única clase, es decir, PHP no permite herencia múltiple.
C贸digo
Ejecuci贸n
Polimirfismo
El polimorfismo, como su nombre indica, sugiere múltiples formas. En programación cuando hablamos de polimorfismo nos referimos a la capacidad de acceder a múltiples funciones a través del mismo interfaz. Es decir que un mismo identificador, o función puede tener diferentes comportamientos en función del contexto en el que sea ejecutado.
El polimorfismo es un concepto difícil de entender en un primer momento y en mi opinión PHP no nos ayuda demasiado en este aspecto, al no ser este un lenguaje de programación fuertemente tipado.
Su implementación varía en función del lenguaje de programación. En algunos casos para establecer una relación poliformica es necesario que cada uno de los objetos implicados compartan una misma raíz, siendo entonces necesario establecer una jerarquía de clases. Este es el caso de los lenguajes de programación fuertemente tipados como Java.
C贸digo
Ejecuci贸n
Public, Private y Protected
Public: Los elementos declarados como Public son accesibles tanto desde fuera como desde dentro de la clase.
Private: Los elementos declarados como Private son accesibles sólo desde la misma clase donde fueron definidos.
Protected: Los elementos declarados como Protected son accesibles desde la misma clase donde fueron definidos y en sus subclases.
C贸digo
Ejecuci贸n
Clases abstractas
Cuando se hereda de una clase abstracta, todos los métodos definidos como abstract en la definición de la clase parent deben ser redefinidos en la clase child; adicionalmente, estos métodos deben ser definidos con la misma visibilidad (o con una menos restrictiva). Por ejemplo, si el método abstracto está definido como protected, la implementación de la función puede ser redefinida como protected o public, pero nunca como private. Por otra parte, las estructuras de los métodos tienen que coincidir; es decir, la implicación de tipos y el número de argumentos requeridos deben ser los mismos.
C贸digo
Ejecuci贸n
Interfaz
Las interfaces de objetos permiten crear código con el cual especificamos qué métodos deben ser implementados por una clase, sin tener que definir cómo estos métodos son manipulados.
Las interfaces son definidas utilizando la palabra clave interface, de la misma forma que con clases estándar, pero sin métodos que tengan su contenido definido.
Todos los métodos declarados en una interfaz deben ser public, ya que ésta es la naturaleza de una interfaz.
Código
interface encendible{
public function encender();
public function apagar();
}
class bombilla implements encendible{ public function encender(){
echo "<br>Y la luz se hizo...";
}
public function apagar(){ echo "<br>Estamos a oscuras...";
}
}
Código
class coche implements encendible{
private $gasolina;
private $bateria;
private $estado = "apagado";
function __construct(){ $this->gasolina = 0;
$this->bateria = 10;
}
public function encender(){
if ($this->estado == "apagado"){
if ($this->bateria > 0){
if ($this->gasolina > 0){ $this->estado = "encendido";
$this->bateria --;
echo "<br><b>Enciendo...</b> estoy encendido!";
}else{
echo "<br>No tengo gasolina";
}
}else{
echo "<br>No tengo batería";
}
}else{ echo "<br>Ya estaba encendido";
}
}
public function apagar(){
if ($this->estado == "encendido"){
$this->estado = "apagado";
echo "<br><b>Apago...</b> estoy apagado!";
}else{ echo "<br>Ya estaba apagado";
}
}
public function cargar_gasolina($litros){ $this->gasolina += $litros;
echo "<br>Cargados $litros litros";
}
}
function enciende_algo ($algo){ $algo->encender();
}
Código
$mibombilla = new bombilla();
$micoche = new coche();
enciende_algo($mibombilla);
enciende_algo($micoche);
class cd{ public $espacio;
}
$micd = new cd();
enciende_algo($micd); //da un error. cd no implementa la interfaz encendible
Ejecuci贸n