Daniele Cruciani
Programmatore Developer PHP/MySQL Freelance
mobile: +39 3489215204

icq skype msn linkedin fb t ff youtube picasa google me on github

Advertisement

You are here

Some Terms: Registry Pattern, object hash

    I would talk about a pattern whose name I fail to know before, giving it the name of multi-singleton.

    Registry pattern

    I read about it in PHP 5 certification study guide from php|architect's series. This is the example given:

    class Registry {
      private static $_register;
      public static function add(&$item, $name = null)
      {
        if (is_object($item) && is_null($name)) {
          $name = get_class($item);
        } elseif (is_null($name)) {
          $msg = "You must provide a name for non-objects";
          throw new Exception($msg);
        }
        $name = strtolower($name);
        self::$_register[$name] = $item;
      }
      public static function &get($name)
      {
        $name = strtolower($name);
        if (array_key_exists($name, self::$_register)) {
          return self::$_register[$name];
        } else {
          $msg = "’$name’ is not registered.";
          throw new Exception($msg);
        }
      }
      public static function exists($name)
      {
        $name = strtolower($name);
        if (array_key_exists($name, self::$_register)) {
          return true;
        } else {
          return false;
        }
      }
    }
    

    Simple enough, also I would like to talk about a function:

    spl_object_hash($object)

    This return an hash from an object. And now, more simply, I have a singleton, which I use to get info about an account, but also I want to use that class to give me info given an object. Thus:

    class MySingleton {
      static private $instance = null;
      static private $_obj_register = array();
      static public function getInstance() {
        if(self::$instance == null) {
          $c = __CLASS__;
          self::$instance = new $c;
        }
        return self::$instance;
      }
      
      public function getInfoForNode($node) {
        $hash = spl_object_hash($node);
        if(!array_key_exists($hash, MySingleton::$_obj_register)) {
          // something to calc from $node and other singleton datas
          // ....
          // and store in array
          self::$_obj_register[$hash] = $node->nid;
        }
        return self::$_obj_register[$hash];
      }
    }
    
    

    I mixed the two, and dynamic method refer to static property.

    Refer

    Php|architect's Zend PHP 5 Certification Study GuidePro PHP: Patterns, Frameworks, Testing & More: Patterns, Frameworks, Testing and More

    From Amazon.it

    PHP]Architect's Zend PHP 5 Certification Study GuidePro PHP: Patterns, Frameworks, Testing and More

    kindle!

    Pro PHP: Patterns, Frameworks, Testing and More