[development] Eliminate hooks entirely in Drupal 6
Allie Micka
allie at pajunas.com
Wed Jan 24 00:08:36 UTC 2007
On Jan 23, 2007, at 4:34 PM, Gabor Hojtsy wrote:
> Well, I am increasingly adopting a similar coding practice. A few
> days ago, I also split up archive.module into a small stub which
> registers the menu item and has a page callback, and then that page
> callback includes archive.inc which contains all the magic to
> display an archive page. This does eliminate a great deal of
> parsing for PHP. Although we use an opcode cache here, we observed
> greatly reduced memory usage if we take care of doing our own
> modules this way. (I don't have hard numbers unfortunately).
FWIW, I've been doing the same. To keep things consistent, each of
my modules that's more than few hundred lines has a _module function
that includes the inc file:
function foo_menu($may_cache) {
$items[] = array('path' => 'admin/user/foo',
'title' => t('Foo'),
'callback' => '_foo',
'callback arguments' => array('admin'),
);
// ...
return $items;
}
function foo_form($node) {
return _foo('node_form', $node);
}
function _foo($func) {
require_once dirname(__FILE__).'/foo.inc';
if (function_exists($func = '_foo_'.$func)) {
$args = func_get_args();
unset($args[0]);
return call_user_func_array($func, $args);
}
}
And then, in the foo.inc file, I can implement _foo_admin,
_foo_node_form and any other functions I'd want to call.
Naturally, I try to keep all of the code required for normal
operations in the .module file. (foo_user, view/load portions of
foo_nodeapi, foo_block, etc) It would be counter-productive to
invoke _foo() on every page load.
Allie Micka
pajunas interactive, inc.
http://www.pajunas.com
scalable web hosting and open source strategies
More information about the development
mailing list