代码之家  ›  专栏  ›  技术社区  ›  Shoaib Nawaz

如何将模块的代码拆分为单独的文件

  •  10
  • Shoaib Nawaz  · 技术社区  · 14 年前

    有一次,我计划简化我的一个复杂模块,它的一半功能集已经达到2.3K行。由于缺乏对纳入范围的了解,我不得不退回所有这些步骤。

    3 回复  |  直到 14 年前
        1
  •  10
  •   Community CDub    8 年前

    什么 Nikit said 是正确的。
    我将添加一些钩子来定义需要加载哪些文件。这种挂钩的例子有 hook_theme() ,和 hook_menu() .

    module_load_include() 从函数外部。

    function book_menu() {
      $items['admin/content/book'] = array(
        'title' => 'Books',
        'description' => "Manage your site's book outlines.",
        'page callback' => 'book_admin_overview',
        'access arguments' => array('administer book outlines'),
        'file' => 'book.admin.inc',
      );
      $items['admin/content/book/list'] = array(
        'title' => 'List',
        'type' => MENU_DEFAULT_LOCAL_TASK,
      );
      $items['admin/content/book/settings'] = array(
        'title' => 'Settings',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('book_admin_settings'),
        'access arguments' => array('administer site configuration'),
        'type' => MENU_LOCAL_TASK,
        'weight' => 8,
        'file' => 'book.admin.inc',
      );
      // …
    }
    
    function user_theme() {
      return array(
        'user_picture' => array(
          'arguments' => array('account' => NULL),
          'template' => 'user-picture',
        ),
        'user_profile' => array(
          'arguments' => array('account' => NULL),
          'template' => 'user-profile',
          'file' => 'user.pages.inc',
        ),
        // …
        'user_admin_perm' => array(
          'arguments' => array('form' => NULL),
          'file' => 'user.admin.inc',
        ),
        // …
      );
    }
    
        2
  •  7
  •   googletorp    14 年前

    使用更多的文件,只是将相似的东西组合在同一个文件中,以使其更易于管理。使用的典型文件是

    • .admin.inc 所有的管理工作,菜单回调,表格等。
    • .pages.inc 用于前端菜单回调。
    • .theme.inc 用于主题函数、预处理挂钩等。
    • .forms.inc

    这更像是一种编码风格。所以这只是为了帮助你自己维护你写的代码。

        3
  •  2
  •   Nikit    14 年前

    这很简单,只需查看其他大模块(如cck、视图等)。主要挂钩应该在模块中,其他应在不同的文件-主题,管理页面,其他页面,服务功能等。。。