Usando Getters Y Setters YII
Enviado por ulises68 • 8 de Septiembre de 2013 • 1.638 Palabras (7 Páginas) • 368 Visitas
Capítulo I
- Uso getters y setters
- Uso de eventos Yii
- Utilización de la importación y carga automática
- Con excepciones
- Configuración de componentes
-Configuración por defecto del widget
- Uso Yii colecciones núcleo
- Trabajar con solicitud
Usando getters y setters
Yii tiene muchas características que vienen de otros lenguajes, como Java o C #. Uno de ellos es la definición de propiedades con getters y setters para cualquiera clase Heredada (extendida) del CComponente (esto es, virtualmente cualquier clase Yii).
A partir de esta receta, aprenderá a definir sus propias propiedades con getters y setters, cómo hacer que sus propiedades de sólo lectura, y la forma de ocultar detrás de un tratamiento personalizado nativo PHP asignaciones.
How to do it...
1. Como PHP no tiene propiedades a nivel del lenguaje, sólo podemos usar getters y setters en la forma siguiente:
class MyClass
{
// $property oculta
private $property;
// getter
public function getProperty()
{
return $this->property;
}
// setter
public function setProperty($value)
{
$this->property = $value;
}
}
$object = new MyClass();
// setting value
$object->setProperty('value');
// getting value
echo $object->getProperty();
2. Esta sintaxis es muy común en el mundo Java, pero es un poco largo para utilizar en PHP. Aún así, no desea utilizar la misma funcionalidad que C # y las propiedades que nos da: llamando getters y setters con miembros de la clase. Con Yii, podemos hacerlo de la siguiente manera:
// Heredando CComponent es necesario
class MyClass extends CComponent
{
private $property;
public function getProperty()
{
return $this->property;
}
public function setProperty($value)
{
$this->property = $value;
}
}
$object = new MyClass();
$object->property = 'value'; // mismo como $object->
setProperty('value');
echo $object->property; // mismo como $object->getProperty();
3. Usando estas características, puede hacer que las propiedades de sólo lectura o sólo escritura, manteniendo la sintaxis PHP simple como sigue:
class MyClass extends CComponent
{
private $read = 'read only property';
private $write = 'write only property';
public function getRead()
{
return $this->read;
}
public function setWrite($value)
{
$this->write = $value;
}
}
$object = new MyClass();
// Nos da un error, ya que estamos tratando de escribir una propiedad de sólo lectura
property
$object->read = 'value';
// echoes 'read only property'
echo $object->read;
// nos da un error, ya que estamos tratando de leer una propiedad de sólo escritura
echo $object->write;
// writes 'value' to private $write
$object->write = 'value';
4. Yii utiliza esta técnica extensamente porque casi todo es un componente. Por ejemplo, cuando llamamos Yii :: app () -> User-> Id para obtener el Id del usuario logeado, lo que realmente llamamos es Yii :: app () -> getUser () -> getId (). (::operador de resolución ámbito).
How it works...
Para usar getters y setters como propiedades, CComponent usamos el método mágico de PHP:
___ set, __ isset y __ unset (http://php.net/manual/en/language.oop5. magic.php).
El siguiente ejemplo muestra lo Yii 1.1 CComponente:: __get como aparece:
public function __get($name)
{
$getter='get'.$name;
if(method_exists($this,$getter))
return $this->$getter();
…
Esta magia de PHP intercepta todas las llamadas del método a falta de propiedades reales, así que cuando llamamos $myClase-> propiedad, recibe propiedad como un parámetro $name. Si un método llamado getProperty existe, entonces PHP utiliza su valor de retorno como un valor de propiedad.
Usando Eventos Yii
La mayoría de las clases Yii se heredan (extend) de Yii CComponent que nos permite lograr la flexibilidad de una gran aplicación mediante el uso de eventos. Un evento es un mensaje que indica a la aplicación que realice alguna accion.
Podemos registrar varios eventos dentro de un mismo controlador que reaccionen a ciertos tipos de eventos. Un controlador puede obtener los parámetros de un evento para que funcione y reaccione en consecuencia. El uso de eventos permite lograr la flexibilidad de una gran aplicación.
En esta receta, aprenderá cómo declarar y utilizar ambos eventos predefinidos y personalizados en la aplicación.
How to do it...
Para declarar un evento en su clase hija CCcomponent, se debe añadir un método con un nombre que comienza con él. Por ejemplo, si agrega el método onRegister, recibirá un evento correspondiente a lo declarado.
.
Típicamente, los eventos son usados para:
- Declarar un evento mediante la adición de un método correspondiente.
- Añadir uno o varios manejadores de eventos .
- Generar un evento mediante el método CComponent::raiseEvent para los componentes.
- Todos los manejadores suscritos se llama automáticamente.
Veamos cómo podemos asociar un controlador de eventos para un evento. Para lograrlo, podemos usar el método CComponente ::AttachEventHandler. Aceptar los siguientes parámetros:
$name: Nombre del evento
$handlerr: Controlador de eventos, Regresa una de llamada estándar de PHP, tenemos varias formas de definir una llama de retorno de la siguiente manera:
- Utilice una función global y sólo tiene que pasar su nombre como una cadena, como ‘mi_funcion'.
- Use un método de clase estática. Pasando un array: array ('ClassName', 'staticMethodName').
- Utilice un método objeto: array ($ objeto, 'objectMethod').
- Crear y pasar una función anónima usando create_function de la siguiente manera:
$ component-> AttachEventHandler ('onclick',create_function )('$event ‘,’ eco "Click";'));
- A partir de PHP 5.3, puede utilizar funciones anónimas sin create_function:
$component->
...