Internal Plugintypes
This classes are stored in "class/plugin.php" There are 3 types used by the pluginsys:
pluginsWhat is a plugin? How we write a plugin? These questions are answered here. Since "plugin" is the class, which a plugin has to extend, it is also the class, which predefine them. This is the plugin which is stored on filesystem.
rawPlugins
The rawPlugin is basicly needed to scan the filesystem/folders for new avaible plugins. It just contains two informations: className and classPath (with php-file). This is the only thing we need to do a instance of "plugin". But first read "instancedPlugins" ! rawPlugin is stored in RAM only!
instancedPlugins
The instancedPlugin represent a database-stored object which get the information to instance from a rawPlugin. It contains more stuff too, as example the individual name and description. And finally, here we also have a "getInstance"-method to get our "plugin".
Conclusion
With this three models, we are able to construct a very lite system which could do nearly everything. The plugins don't get loaded, except when they get called (getInstance). This works great in proof of concept. Because it's limmited this moments to one pluginInstance per site, there is the idea to create global widgets, which are provided by a plugin then.