I am writing a basic plugin system in PHP. I have researched Decorators and Observers.
To keep the learning curve small, I would like to simply be able to write, in key places, hook($someHookNumber)
(passing no other arguments) and have it be replaced by some corresponding code that shares the same variable scope, as if I had just simply include
'd the code.
At the moment, hook(1)
runs any functions that have registered for the calling method (and class) at the given hook number (in this case, 1.) So, scope is at least two functions below the method that called hook()
.
While member variables like $this->exampleVariable
can be manipulated perfectly fine two functions down (if called by an object,) any non-member variables like $text
are only manipulated within the scope of the plugin function.
The easy solution is "just use member variables" or "use globals," but I'd rather hook()
work as similar to include()
as possible to avoid future headaches.