【问题标题】:include files in mvc model php在 mvc 模型 php 中包含文件
【发布时间】:2013-06-21 14:47:49
【问题描述】:

我创建了自己的 mvc 模型,所以我必须包含我所有的模型和控制器类。

每次我需要在我使用的控制器中使用模型时:

require_once('myModel.php');

有点像java中的import

但是我有一个问题,继续这种方式是一个好的解决方案吗? 我宁愿在代码开头包含我所有的模型和控制器,但我担心这个解决方案太重了。

谢谢

【问题讨论】:

  • 为什么不用像 cakephp、codeignator、Laravel 这样的 MVC 框架。以及为什么要不必要地包含所有模型。
  • @AmarBanerjee,你真的看过你提到的框架是如何实现自动加载的吗? CakeCILaravel。即使对 (laravel) 不那么冒犯,也只是一堆包装在命名空间中的静态函数(恰好看起来像一个类)。这些都是可怕的代码。你不应该把它们推荐给新手。

标签: php model-view-controller include


【解决方案1】:

一般来说,我不建议您创建自己的框架,但如果您坚持或想要出于学习目的这样做,PHP 社区创建了 FIG(框架互操作组)以保持框架之间的一致性,以及应该如何处理事情。

您要解决的问题称为自动加载,它也记录在 AS PSR-0 标准中,https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md,祝您阅读愉快。

这是符合 PSR-0 的自动加载器示例:PHP - most lightweight psr-0 compliant autoloader

基本上,这意味着您的名称景观路径将告诉您在哪里查找文件。

例如你想在 bootstrap.php 中获取 BussinessObject:

//MVC/Models/BussinessObject.php

namespace MVC/Models;

class BussinessObject {

}

//MVC/bootstrap.php

namespace MVC;

use MVC/Models/BussinessObject;

$BussinessObject = new BussinessObject()

然后自动加载器将在 MVC/Models/BussinessObject.php 中查找文件,并且调用需要使用该路径。

【讨论】:

  • 感谢您的回答,我尝试了 Symfony2 但我不太喜欢,我可能会测试 zend,您有框架建议吗?
  • 这取决于您的需求,想要像 Silex 这样的微框架的小东西。我对 Symphony 非常满意,我会尝试 Laravel 4 看起来不错的框架,Zend 2 也比 1 更好,但学习它需要时间。
  • 注意:Silex 不再维护
【解决方案2】:

最好的方法应该是仅在真正需要时才包含文件。 由于这通常不实用,您应该尝试在应用程序初始化中仅包含包含您使用的基本功能的文件。

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2015-07-08
    • 2013-03-26
    • 2011-06-10
    相关资源
    最近更新 更多