Re: Extending an instantiated class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 15, 2011 at 03:01:44PM +0100, Alain Williams wrote:
> Well, that is what I think that I need. Please let me explain what I am trying to do
> and tell me how to do it or a better way of doing it.
> ......

I have solved it. The problem is basically one of ensuring that properties are the same
value when accessed via the parent or child class ... be that to get or set a value.
So I solved the problem by making the properties in the child class references to the
ones in the parent class.

Methods are not a problem - inheritance just works fine.

To do this, pass the instance of the parent class to the child class constructor and use
a reflection class to determine the properties in the parent class. This will not work
properly if the child class overrides a property of the parent class ... this does not
worry me.

class Screen {
    public $screen;
    ....
}

class Form extends Screen {
    function __construct(&$s) {
      $sr = new ReflectionClass($s);

      foreach($sr->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED) as $p)
        $this->{$p->name} = &$s->{$p->name};
    }
}

$s = new Screen(....);
$s->AddJsVar('Date', '15 Oct 2011');

$f1 = new Form($s);

$f1->screen = 'something'; // this assigns the property in $s.


Comments ?

-- 
Alain Williams
Linux/GNU Consultant - Mail systems, Web sites, Networking, Programmer, IT Lecturer.
+44 (0) 787 668 0256  http://www.phcomp.co.uk/
Parliament Hill Computers Ltd. Registration Information: http://www.phcomp.co.uk/contact.php
#include <std_disclaimer.h>

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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux