【问题标题】:Best way to load only specfic functions in PHP在 PHP 中仅加载特定函数的最佳方法
【发布时间】:2009-12-17 20:29:49
【问题描述】:

我正在为个人网站编写自己的内容管理系统,它的流量会很低,但我想为我未来的知识使用最佳实践。

我的计划是有单独的部分,基本上是第一个非根目录,将有它自己的脚本并直接控制它的所有子页面。我希望使用 mod_rewrite 从根目录中的 index.php 控制所有内容以使其透明。

什么是仅加载该部分所需内容而不是其他所有部分的最佳方法?我正在考虑为每个部分使用一个单独的文件,并根据我正在使用的 URL 命名它,这样我就可以只包含它。但这似乎并不优雅。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: php content-management-system performance include


    【解决方案1】:

    看看MVC patternFront Controller pattern。这可以通过多种复杂程度不同的方式来实现。基本上,您的 FrontController 将接受任何传入的请求并将它们分派给适当的控制器(您的部分)。然后,您的控制器将从您的模型中获取任何数据,例如您的业​​务对象并将它们推送到视图。视图是返回给客户端的内容。

    【讨论】:

    • +1 用于直接引用我提到的模式。
    【解决方案2】:

    除了 Gordon 提到的 MVC 模式之外,为了确保您没有加载任何不需要使用的额外类,您可以设置一个简单的类自动加载器。自动加载器可以以多种方式工作,但在我目前正在开发的 MVC 应用程序中,类名也是文件名,它也指示文件所在的位置。

    __autoload 是一种神奇的方法,如果您尝试访问当前未包含的类,PHP 会调用该方法。然后它执行函数中指定的任何操作,然后再次尝试对该类进行相同的调用。实现自动加载器将我的 MVC 应用程序实例的平均内存占用减少了大约 75%...查看此处的文档:

    http://us3.php.net/autoload

    【讨论】:

    • 注意:您必须使用 PHP >5 才能利用类自动加载
    • 自动加载必须是 PHP 中最好的功能之一。对专门用于包含类的整个文件的需求已经一去不复返了。我仍然发现自己在奇怪的位置使用常规包括,但总的来说它真的很有用。
    【解决方案3】:

    你通常看到的是,重写规则要么只是对 /index.php 执行一个平面 erwrite——然后这将调用一些函数/类,这些函数/类将整理出所需的端点(控制器) 是什么以及该端点的参数是什么。因此,您将在该控制器(例如 /mysection/index.php)中设置所有资源并调用需要调用的所有内容以显示该部分的给定页面。

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 2022-01-16
      • 1970-01-01
      • 2016-09-12
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多