[development] inferring which file to include based on page callback array

Moshe Weitzman weitzman at tejasa.com
Mon Jun 11 20:46:04 UTC 2007

ah, thats the other thing that annoyed me. this derogatory term "magic". 
  larry commented in the issue that module developers need full control 
over function naming and so on. this is laughable. drupal already has 
strict conventions for function naming - the hook system. my proposal is 
more of the same, except is is a convenience not a requirement. these 
are *conventions*, not magic. conventions are powerful, and are popular 
in many apps like drupal and rails.

"we have so much legacy code". all that code is not affected until you 
start splitting up your module into .inc files. this is a moot point.

we can keep the include element if people want to, so they can include 
random files. that will solve the desire to put an export_ function in 
the admin file.

this isn't just about the menu system. i think we've hurt 
interoperability of modules with larry's patch. i think modules are 
going to have to start including each others files in order to get the 
features they want. thats dirty. it shouldn't happen, but it will. my 
proposal gets us past that. all a module developer has to do is use 
module_invoke(<other module>, <function>) and the right includes will 
happen. this isn't foolproof, but i do think it is an improvement.

Peter Wolanin wrote:
> This seems like a little too much "magic" in terms of the file and
> function naming, and perhaps too rigid as well.  What if I want to
> include both admin and export function in one .inc file?
> -Peter
> On 6/11/07, Moshe Weitzman <weitzman at tejasa.com> wrote:
>> you do so based on the first part of the function. so in my example
>> below, 'admin' is the part and thus system.admin.inc is known. sorry, i
>> omitted that. it was buried in the issue where larry added the include
>> parameter. that file would only be included if it existed, of course.
>> Peter Wolanin wrote:
>> > Moshe - how does this make sense?  You no longer know which file to
>> > include for the callback.
>> >
>> > -Peter
>> >
>> > On 6/11/07, Moshe Weitzman <weitzman at tejasa.com> wrote:
>> >
>> >>    $items['admin/build'] = array(
>> >>      'title' => 'Site building',
>> >>      'page callback' => 'system_admin_menu_block_page',
>> >>      'file' => 'system.admin.inc',
>> >>
>> >>    $items['admin/build'] = array(
>> >>      'title' => 'Site building',
>> >>      'page callback' => array('system, 'admin_menu_block_page'),
>> >>    (
>> >>
>> >> Note that we may still have to support a string as a page callback (i
>> >> think) for non module defined callbacks.
>> >>
>> >>

More information about the development mailing list