Re: Add methods to object dinamically

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

 



* Francisco M. Marzoa Alonso <fmmarzoa@xxxxxxx>:
> I've seen that's possible to add members to objects dinamically, in example:
>
> class MyClass {
>     private $a;
> }
>
> $MyObject = new MyClass ();
> $MyObject->b = 1;
>
> Now $MyObject has a public member called 'b' that has a value of '1'.
>
> The question is, is it possible to add methods in the same way?
>
> I meant something such as:
>
> function sum ( $this ) {
>     return $this->a+$this->b;
> }
>
> $MyObject->sum = sum;

No. There are some things you can look into, however. PHP4 has an
overload() function (and PHP5 has it built in) -- you could then add a
__call() method that checks to see if a function is defined, and if so,
calls it.

    class MyClass 
    {
        var $a;

        // Note: you'd call this differently in PHP5
        function __call($function, $arguments, &$return)
        {
            if (function_exists($function)) {
                $function($arguments);
            }
        }
    }
    overload('MyClass'); // This line unncessary in PHP5

The other possibility is to look into the classkit extension
(http://php.net/classkit); this would require being able to install PHP
extensions (not a problem if it's your own box).

-- 
Matthew Weier O'Phinney           | mailto:matthew@xxxxxxxxxx
Webmaster and IT Specialist       | http://www.garden.org
National Gardening Association    | http://www.kidsgardening.com
802-863-5251 x156                 | http://nationalgardenmonth.org

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