【问题标题】:How to structure PHP Modules?如何构建 PHP 模块?
【发布时间】:2010-12-26 13:35:27
【问题描述】:

我有一个问题要问你。我不确定如何为 CMS 构建 PHP 模块,也许当我创建一个新页面时,我想选择创建的模块,例如 新闻模块、图库模块等。

如何在 PHP CMS 中构建和实现这些模块?

【问题讨论】:

  • 欢迎来到 SO。这个问题太笼统了。您将需要添加一些关于您所指的“结构化”方面的细节。此外,可能无法回答,因为我们对您的 CMS 一无所知
  • 所以我的意思是如何从mysql数据库或目录调用模块
  • 谁能帮我解答这个问题??
  • 不是真的,我觉得还是太模糊了,无法有意义地回答。如果您可以将问题分解为特定问题会更好,也许可以显示您拥有的一些代码/文件结构

标签: php mysql content-management-system


【解决方案1】:

在您的数据库中,您应该保存一个包含以下内容的模块表:

  • 身份证
  • 模块名称
  • module_desc
  • module_folder
  • module_active

这样您就可以保持模块井井有条,在您拥有module_folder 的表格中,这应该是模块的位置,例如

cms_root() . "/modules/%module_folder%/main.module.php"

这就是接口派上用场的地方:)

interface IModule
{
    public function __run($param);
    public function __version();
    public function __shutdown();
    //...
}

您还应该有一个名为 Module 的类,该模块将扩展并收集对模板/数据库等的权限。

class Module
{
    public $DB,$TPL; /*...*/

     /*
         Functions ehre to help the module gain access to the instance of the page.
     */
}

Module 类还应该能够执行模块并跟踪执行的模块,因此在您的核心代码中您可以说$Module->RunAll(),它会运行它们。

模块文件可能如下所示:

class Gallery_Module extends Module implements IModule
{
    public function __version()
    {
         return '1.0';
    }

    public function __run()
    {
         //Assign module data to the template :)
    }

    public function __shutdown()
    {
         //Clean old records etc from DB
    }
}

如上所述,在您的核心中,您可以让 Module 类从数据库中读取活动模块,从文件夹加载文件并创建该类的实例,然后执行。

希望这会有所帮助。

【讨论】:

  • 是的,这对我有帮助,但是当我创建一个新页面并想选择模块照片库以显示所有图像时,如何制作这个,你能帮我吗?
  • 正如 Pekka 所说,我们不知道有多少信息可以帮助您达到您的要求,您需要多对多的数据库关系才能将模块分配给页面。
  • 你有什么你自己创造的例子,对我有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-30
  • 2017-02-02
  • 2011-05-22
  • 2023-04-06
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多