Well, I'm back, and with no new work done on my plugin system (Was swamped with work for awhile). Lately I've had some time to think, and reevaluate the vBulletin plugin method* vs my own method, and I can honestly say I'm a bit stumped, as far as I can tell it all comes down to a toss of a coin, but maybe I'm missing something, so I'm making this thread in hopes that you guys will open my eyes.
Basically what I want to know is this: Which method of writing plugins (Extra code future developers/users can write to add extra functionality without breaking the ability to update) is fastest, the most secure (Assuming both are written perfectly), and overall the easiest for end users to work with?

My method/idea:
/module/module.plugins.php
class ModulePLugins {
public moduleName = "Module";
public hooks = array("hookName" => array('FunctionName'),
"hookName" => array('FunctionName', 'FunctionName')
);

}

$hook->Init();
Go through and look for '.plugins.php' files in every folder in the 'modules' folder, then add the hooks array into an array organized similiar, however instead of just "FunctionName", add them to the HooksLoaded array as such:
public hooksLoaded = array( "hookName" => array(array('ModuleName','FunctionName')),
"hookName" => array(array('ModuleName','FunctionName'), array('ModuleName','FunctionName'))
);

$hook=>SetHook($hookName, $className = '', $functionName = '');
$hook->SetVariable($variableName, $variableRef, $className, $functionName = '');

$variableName &= $hook->GetVariable($variableName, $className, $functionName = '');

$hookName has to be unique
$className can be either the class/module name, or "main" if it's outside of a class/module.
*vBulletins:
Well, I can't really find too much on it in terms of official documentation, however it basically boils down to this... You make a 'product', or a group of all your plugins, and from there you make plugins as children of this product - you can access all hooks in the code, and you make a plugin by selecting a hook from a list (It shows what file it is a part of as well, useful feature), and enter in valid PHP code into the text box. Once saved, vBulletin will look at all active plugins on runtime, compile them into a list, then eval() them in their proper hook. The beauty of this method is that you can export a product into standard XML, send to someone / post on a forum (vbulletin.org, for instance), and then someone else just imports the product file.
Now if I used this method, I had the idea / was inspired by simshaun to save the data from the database (On saving, modifying or deleting a plugin) in full, each time, to the proper hook files and merely including them in the hook location rather than eval. Hopefully this would offer a speed increase and memory decrease, as you wouldn't have to run a query each time, loading unnecessary plugins each time.


With all this in mind - which method seems like the most sound? I would like to get some feedback in terms of replies, however just voting on the poll would help me quite a bit. No matter which method I decide to go with, I will be posting the source of it, in full, in this thread once done as a way of saying thanks.