Ver Mensaje Individual
  #9 (permalink)  
Antiguo 30/08/2010, 09:56
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con PDO y mi clase

He visto muchas veces que haces referencia al Patrón Registry. Aquí les dejo la implementación y espero que este aporte les sirva de algo.

Implementacion del Patron Registry en PHP5

Código PHP:
Ver original
  1. <?php
  2. /**
  3. * Registers objects and variables
  4. *
  5. * Makes objects and variables available to any level
  6. * of the application without having to keep track
  7. * of their existence.  Also useful for objects such
  8. * as database connectors that are used globaly and
  9. * not to be duplicated.
  10. *
  11. * PHP version 5
  12. */
  13. class registry
  14. {
  15.     /**
  16.      * Registry of variables and objects
  17.      * @access private
  18.      * @var array
  19.      */
  20.     static private $registry = array();
  21.  
  22.     /**
  23.      * Adds an item to the registry
  24.      * @access public
  25.      * @param string item's unique name
  26.      * @param mixed item
  27.      * @return boolean
  28.      */
  29.     public function add($name, &$item)
  30.     {
  31.         if (!self::exists($name)) {
  32.             self::$registry[$name] = $item;
  33.             return true;
  34.         } else {
  35.             return false;
  36.         }
  37.     }
  38.  
  39.     /**
  40.      * Returns true if item is registered
  41.      * @access public
  42.      * @param string item's name
  43.      * @return boolean
  44.      */
  45.     public function exists($name)
  46.     {
  47.         if (is_string($name)) {
  48.             return array_key_exists($name, self::$registry);
  49.         } else {
  50.             throw new Exception('Registry item\'s name must be a string');
  51.         }
  52.     }
  53.  
  54.     /**
  55.      * Returns registered item
  56.      * @access public
  57.      * @param string item's name
  58.      * @return mixed (null if name is not in registry)
  59.      */
  60.     public function &get($name)
  61.     {
  62.         if (self::exists($name)) {
  63.             $return = self::$registry[$name];
  64.         } else {
  65.             $return = null;
  66.         }
  67.         return $return;
  68.     }
  69.  
  70.     /**
  71.      * Removes a registry entry
  72.      * @access public
  73.      * @param string item's name
  74.      * @return boolean
  75.      */
  76.     public function remove($name)
  77.     {
  78.         if (self::exists($name)) {
  79.             unset(self::$registry[$name]);
  80.         }
  81.         return true;
  82.     }
  83.  
  84.     /**
  85.      * Clears the entire registry
  86.      * @access public
  87.      * @return boolean
  88.      */
  89.     public function clear()
  90.     {
  91.         self::$registry = array();
  92.     }
  93. }
  94. ?>

Como Usar?

Código PHP:
Ver original
  1. <?php
  2. require_once 'registry.php';
  3.  
  4. //sets and registers a variable
  5. $item = 'Here is a registered variable';
  6. registry::add('Variable', $item);
  7.  
  8. /**
  9. * Test class that echos a registered variable
  10. */
  11. class test
  12. {
  13.     private $item;
  14.  
  15.     public function __construct() {
  16.         $this->item = registry::get('Variable');
  17.     }
  18.  
  19.     public function get() {
  20.         echo '<p>'.$this->item.'</p>';
  21.     }
  22. }
  23.  
  24. //will return "Here is a registered variable"
  25. $test = new test();
  26. $test->get();
  27.  
  28. //tests if "Variable" exists
  29. if (registry::exists('Variable')) {
  30.     echo '<p>"Variable" exists</p>';
  31. } else {
  32.     echo '<p>"Variable" does not exists</p>';
  33. }
  34.  
  35. //tests if "variable" exists
  36. if (registry::exists('variable')) {
  37.     echo '<p>"variable" exists</p>';
  38. } else {
  39.     echo '<p>"variable" does not exists</p>';
  40. }
  41.  
  42. //removes "Variable"
  43. registry::remove('Variable');
  44. ?>

Fuente http://desarrolladorsenior.blogspot....ry-en-php.html

Saludos.

Última edición por atrianaster; 30/08/2010 a las 10:41 Razón: agregar fuente