【问题标题】:PHP: Including files in my own MVC framework?PHP:在我自己的 MVC 框架中包含文件?
【发布时间】:2010-11-17 14:30:18
【问题描述】:

我刚刚开始构建我自己的 MVC 框架。从头开始了解所有内容并只获取我的应用真正需要的东西,感觉真好。

我来自 codeIgniter 背景,这帮助我进入了 MVC 视角来看待事物。在 codeigniter 中,要包含文件,使用 codeIgniters very own load class

这个加载类,当加载一个文件时,会检查一个文件之前是否被包含过,如果没有包含过,这样可以确保一个文件不会被包含两次。

但是,这种包含文件的方法的缺点是无法 (?) 对我的文件运行测试或利用我需要的 IDE 中的 PHPdoc。

显然,我可以在我的应用程序中前后使用 PHP 中的普通 includerequire 函数,其中需要某个库,但显然不可能两次包含同一个文件...

那么 - 在我自己的 PHP5 MVC 框架中使用什么是包含文件的好解决方案?

【问题讨论】:

  • 我有点担心编写冗余代码来覆盖可能的依赖关系,例如,在不同的控制器中使用库时......

标签: php codeigniter model-view-controller include


【解决方案1】:

我正在和你做类似的事情,我正在使用autoload

只要把这个放在 index.php 中:

function __autoload($class_name) {
    include $class_name . '.php';
}

或包含检查多个目录所需的任何逻辑。

编辑:这是我用于检查备用路径的(有点不稳定的)代码。如果您需要检查多条路径,它可以做得更干净。

function __autoload($class_name) {
  $path = INC_PATH . strtolower($class_name) . '.php';

  if (!file_exists($path)) {
    $path = MODELS_PATH . strtolower($class_name) . '.php';
  }

  require $path;
}

【讨论】:

  • 您想告诉我您处理多个目录的解决方案吗?
【解决方案2】:

只需使用 include_oncerequire_once 。虽然 CI 有一个负载类,但您绝不需要使用它。

【讨论】:

    【解决方案3】:

    使用 include_once/require_once,但最好的解决方案是使用自动加载器

    http://php.net/manual/de/language.oop5.autoload.php

    您使用什么 IDE?

    【讨论】:

    • Eclipse PHP 是我选择的 IDE。
    【解决方案4】:

    通常 php 有内置的include_once,顾名思义,它包含文件,但只有一次。

    或者您可以使用大多数 IDE 支持的autoloading(尽管有些需要一点提示 - 取决于您使用的 IDE)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-18
      • 2013-07-13
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      • 2011-04-14
      • 2020-08-18
      相关资源
      最近更新 更多