Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** Property para php
- * ésto fué escrito por alexander171294 - [H]arkonnen
- * como parte del módulo BBParser 1.1.0
- * @ Contact: alexander171294@gmail.com
- */
- trait MyProperty // mi hermoso trait property
- {
- // llamando a funciones setters
- Public function __set($property, $value)
- {
- if(is_callable(array($this, 'set_'.$property), $value))
- return call_user_func(array($this, 'set_'.$property), $value);
- else
- // no hay funcion setter para este atributo (o no existe el atributo)
- trigger_error('Invalid property '.$property.' on SET value', E_USER_ERROR);
- }
- // llamando a funciones getters
- Public function __get($property)
- {
- if(is_callable(array($this, 'get_'.$property)))
- return call_user_func(array($this, 'get_'.$property));
- else
- // no hay funcion getter para este atributo (o no existe el atributo)
- trigger_error('Invalid property '.$property.' on GET value', E_USER_ERROR);
- }
- }
- /* implementación de ejemplo: */
- Class prueba
- {
- use MyProperty;
- private $ejemplo = 0; // variable privada a la que accederemos
- // getter
- private get_ejemplo()
- {
- return $ejemplo;
- }
- // setter
- private set_ejemplo($value)
- {
- $this->ejemplo = $value;
- }
- }
- $example = new prueba();
- $example->ejemplo = 2;
- echo $example->ejemplo;
- // como verán, se puede acceder al atributo privado aparentemente "directamente" no obstante, previamente el código llama a las funciones getters y setters para los atributos privados a los que queremos acceder, por lo tanto no viola los principios de encapsulamiento :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement