Shawn McKenzie wrote:
> Peter van der Does wrote:
>> On Thu, 21 May 2009 14:08:11 -0500
>> Shawn McKenzie <nos...@mckenzies.net> wrote:
>>
>>
>>> This doesn't make sense.  You say "class A needs to be extended with
>>> another class", however what you show below is "class A extending
>>> framework_class".
>>>
>> I worded it wrong, I apologize.
>> Class A needs to be an extension of the framework class.
>>
> 
> Well I guess from my point of view there are several ways depending upon
> the requirements.  Others that are better with OOP will chime in I'm sure.
> 
> This I'll get flamed for, but you can use one instance of core as a global:
> 
> class A extends framework_class {
>   var $core;
> 
>   function A() {
>     $this->core =& $GLOBALS['core'];
>     $this->core->go();
>   }
> }
> 
> //in global scope in bootstrap or whatever
> $core = new core();
> 
> Along the same lines but more OOP and without globals, maybe use a
> registry class and store core in the registry. This also uses one
> instance of core:
> 
> class Registry {
>     protected $_objects = array();
> 
>     function set($name, &$object) {
>         $this->_objects[$name] =& $object;
>     }
> 
>     function &get($name) {
>         return $this->_objects[$name];
>     }
> }
> 
> class A extends framework_class {
>   var $core;
> 
>   function A(&$registry) {  //dunno if you need a reference here or not
>     $this->core = $registry->get('core');
>     $this->core->go();
>   }
>   //i guess you could also pass in core, but registry will give you all
> objects in the registry
>   //function A(&core) {
>     //$this->core = $core;
>     //$this->core->go();
>   //}
> }
> 
> //this is in your bootstrap or whatever
> $core = new core();
> $registry = new registry();
> $registry->set('core', $core);
> 
> Or, if you don't need an object, call it statically:
> 
> class A extends framework_class {
> 
>   function A() {
>     core::go();
>   }
> }
> 

I guess you could always do a singleton so that you always have the same
instance.  Add something like this to the core class (not tested):

static $_instance;

function getInstance() {
        if(self::$_instance === null) {
                self::$_instance = new self();
        }
        return self::$_instance;
}

Then you can do:

class A extends framework_class {
   var $core;

   function A() {
     $this->core = core::getInstance();
     $this->core->go();
   }
 }

-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to