reload() in Python, Possible in PHP?

php.internals

Andrew Heebner

22 years ago
AFAIK, Python supports the reload() method, which lets you dynamically control includes while a script is running. In PHP, even workarounds are tough to create reloadable modules for scripts, so, what other means are there to reload includes, and redeclare functions? Thank you, Andrew Heebner, EvilWalrus.com

Jon Parise

22 years ago
On Sun, Mar 28, 2004 at 03:57:22PM -0500, Andrew Heebner wrote:
> AFAIK, Python supports the reload() method, which lets you dynamically > control includes while a script is running.
This is conceptually easier to implement in Python because a module is its own namespace. In PHP, the "stuff" that is included from another file has no such common organization.
> In PHP, even workarounds are tough to create reloadable modules for > scripts, so, what other means are there to reload includes, and > redeclare functions?
If it's not already safe to include() your file multiple times, I don't think adding a reload() function to PHP is going to improve your situation all that much. The engine would have to do a fair amount of work to figure out how to "reload" the contents of the external script.
-- Jon Parise (jon@php.net) :: The PHP Project (http://www.php.net/)

George Schlossnagle

22 years ago
On Mar 28, 2004, at 4:36 PM, Jon Parise wrote:
> On Sun, Mar 28, 2004 at 03:57:22PM -0500, Andrew Heebner wrote: > >> AFAIK, Python supports the reload() method, which lets you dynamically >> control includes while a script is running. > > This is conceptually easier to implement in Python because a module is > its own namespace. In PHP, the "stuff" that is included from another > file has no such common organization. > >> In PHP, even workarounds are tough to create reloadable modules for >> scripts, so, what other means are there to reload includes, and >> redeclare functions? > > If it's not already safe to include() your file multiple times, I > don't think adding a reload() function to PHP is going to improve your > situation all that much. The engine would have to do a fair amount of > work to figure out how to "reload" the contents of the external > script.
You can do this easily enough in an extension. Combine the function/class tracking stuff that APC performs and internally use the overide_function() function from APD. Obviously that would require a bit of glue to get it working, but the primitive facilities are all there. I don't see any of that ever making it's way into PHP proper though. George