Re: Reflection API Questions

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

 



Check out the runkit extension to PHP (http://www.php.net/manual/en/ref.runkit.php). It should let you do all the class mucking you need to do.

jon

Jim Wilson wrote:
Dear PHP Users,

I have two questions regarding PHP 5's Reflection API (I apologize if this
isn't the right list to ask):

1) Is there a way to inject a method into a Class such that future
instantiations of that Class will have the method?  For example:

------------ Before -----------
class A {
   // Nothing
}
------------ Before -----------

------------ After -----------
class A {
   // method which was injected
   public function injectedFunc($someArg) {
       // ....
   }
}
------------ After -----------

Obviously I'm not looking for a way to modify class A's source code, just
the effective class A specification.

I know that PHP supports extending classes and interfaces, but in my
use-case that isn't really an option since I don't control the code which
instantiates the objects, and they're not using any kind of Factory pattern
for object construction that I could overload with my extended
implementation.

2) Is there a way to change a method which already exists, as in by
overwriting it with a new function?  I'm looking to do the equivalent of
JavaScript's 'function as member' treatment, where it's easy to do something
like:

------------ Snip -----------
// Obj is some object
Obj.meth = function (arg) { /* do something with arg */ };

// Then later on ...
Obj.meth('hello there');
------------ Snip -----------

Thanks in advance for any help, or for redirecting me to the correct list if
this isn't it.

-- Jim R. Wilson


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