Extending an instantiated class

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

 



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 an application where a Screen (web page) may contain several Forms. The Forms
will want to access properties, etc, from their Screen. So what I want is to do
something like:

class Screen {
    private $JavascriptVars = array();

    function AddJsVar($name, $val) {
      $this->JavascriptVars[$name] = $val;
    }
}

class Form extends Screen {
    public $screen;  // Could set to a class Screen

    function DefineForm($fName)
    .....
}

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

$f1 = new Form($s);
$f1->DefineForm('search');
$f1->AddJsVar('CompanyName', 'IBM');

$f2 = new Form($s);
$f2->DefineForm('login');
$f2->AddJsVar('Error', 'Login failed');

The trouble is that $f1->AddJsVar() will fail, class extention seems not designed to work like that.

I could make it work by either:

1) $f1->screen->AddJsVar() --- but I would rather avoid the extra '->screen'.

2) Use of a __call() in class Form -- but that makes things slower.


Any help gratefully received.



I think that to do what I want PHP would need a syntax like:

    $f2 = new $s Form();
or
    $f2 = $s->new Form();

-- 
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