Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写支持模块的PHP应用程序有哪些好方法?_Php_Module - Fatal编程技术网

编写支持模块的PHP应用程序有哪些好方法?

编写支持模块的PHP应用程序有哪些好方法?,php,module,Php,Module,我开始和我的一个朋友用php编写一个应用程序,我想知道您是否对如何在我们的应用程序中实现模块支持有任何建议 或者有没有一种方法可以自动加载php应用程序用php编写的模块?或者我应该仅仅依靠自动加载功能吗 我们不需要可以通过web界面安装的插件,我们只需要一些巧妙的方法将项目的web页面与某些类关联(它们将呈现页面),这样index.php就可以调用正确的类并检索它生成的子页面 至少目前,我们没有使用任何框架。听起来您正在寻找一种方法来组织每个页面需要执行的不同任务。在本例中,请查看。它提供了一

我开始和我的一个朋友用php编写一个应用程序,我想知道您是否对如何在我们的应用程序中实现模块支持有任何建议

或者有没有一种方法可以自动加载php应用程序用php编写的模块?或者我应该仅仅依靠自动加载功能吗

我们不需要可以通过web界面安装的插件,我们只需要一些巧妙的方法将项目的web页面与某些类关联(它们将呈现页面),这样index.php就可以调用正确的类并检索它生成的子页面


至少目前,我们没有使用任何框架。

听起来您正在寻找一种方法来组织每个页面需要执行的不同任务。在本例中,请查看。它提供了一种分离数据访问(模型)和呈现/呈现信息(视图)方式的简单方法

您可以轻松地将页面映射到函数。如果将信息存储在映射值数组中,然后使用函数将请求的URL与数组中的每个URL进行比较。这样的阵列可能如下所示:

$urls = array(
    '/' => 'index',
    '/aboutus/' => 'aboutUs',
);

有几篇文章讨论了如何在几小时内用PHP实现它。这是一个非常简单的指南。我不喜欢他们使用注册表模式,但通读应该可以为您提供足够的信息,让您了解如何自己实现它。

请注意:在这种情况下,自动加载和严格的文件命名就足够了

您可以定义一个特定的名称空间(不是以新的PHP5.3
名称空间
的方式,只是在名称的通用前缀的意义上),例如模块类名称的
模块*

然后,您可以使用只包含一个类定义的类文件在目录中组织模块,例如:

/modules/Mail/index.php   // defines class Module_Mail
/modules/Database/index.php   // defines class Module_Database
/modules/Image/index.php   // defines class Module_Image
然后,每当请求
模块*
类时,您的自动加载功能将:

$Database = new Module_Database("localhost", .....);
从正确的目录中包含正确的文件

Zend框架就是这样做的,而且做得非常好

考虑选择比
模块
更具体的名称空间,以确保与其他脚本和应用程序的互操作性(如果这是将来的选择)


略微相关:

这里您只需要一个MVC体系结构,每个“模块”都有一个控制器类

如果你不反对使用框架,那就选择

它允许您具备以下原则:

  • 像这样的URL:
  • 将或多或少自动调用MyModuleController类中的editAction方法
关于自动加载,您还可以使用定义多个(不止一个)自动加载功能,这样每个模块都可以设置自己的自动加载实现。

这需要走多远-web应用的插件,可通过web界面点击安装,或者在代码中使用普通的新类?它们不需要通过web界面安装,我们认为最好在代码中使用类,并以某种方式让主类知道某个页面已向某个类注册