Shawn McKenzie wrote:
> Peter van der Does wrote:
>> On Thu, 21 May 2009 14:08:11 -0500
>> Shawn McKenzie <[email protected]> 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