Advertisement
Guest User

Property En PHP

a guest
Nov 21st, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.96 KB | None | 0 0
  1.  
  2.  
  3.     /** Property para php
  4.      *  ésto fué escrito por alexander171294 - [H]arkonnen
  5.      *  como parte del módulo BBParser 1.1.0
  6.      *  @ Contact: alexander171294@gmail.com
  7.      */  
  8.     trait MyProperty // mi hermoso trait property
  9.     {
  10.         // llamando a funciones setters
  11.         Public function __set($property, $value)
  12.         {
  13.             if(is_callable(array($this, 'set_'.$property), $value))
  14.                 return call_user_func(array($this, 'set_'.$property), $value);
  15.             else
  16.             // no hay funcion setter para este atributo (o no existe el atributo)
  17.                 trigger_error('Invalid property '.$property.' on SET value', E_USER_ERROR);
  18.         }
  19.        
  20.         // llamando a funciones getters
  21.         Public function __get($property)
  22.         {
  23.             if(is_callable(array($this, 'get_'.$property)))
  24.                 return call_user_func(array($this, 'get_'.$property));
  25.             else
  26.             // no hay funcion getter para este atributo (o no existe el atributo)
  27.                 trigger_error('Invalid property '.$property.' on GET value', E_USER_ERROR);
  28.         }
  29.     }
  30.      
  31.     /* implementación de ejemplo: */
  32.      
  33.     Class prueba
  34.     {
  35.     use MyProperty;
  36.             private $ejemplo = 0; // variable privada a la que accederemos
  37.      
  38.             // getter
  39.             private get_ejemplo()
  40.             {
  41.                     return $ejemplo;
  42.             }
  43.            
  44.             // setter
  45.             private set_ejemplo($value)
  46.             {
  47.                     $this->ejemplo = $value;
  48.             }
  49.     }
  50.      
  51.     $example = new prueba();
  52.      
  53.     $example->ejemplo = 2;
  54.     echo $example->ejemplo;
  55.      
  56.     // 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