【发布时间】:2009-10-02 21:39:34
【问题描述】:
我一直在使用 CodeIgniter 框架,但是在学习了 Java 和接口、抽象类、包等很棒的特性之后,PHP 5 也支持这些特性中的大部分,我准备毕业并构建一个 真正的 PHP 中的 OO 框架,它使用了所有这些功能(包括命名空间),因此我可以构建更优雅的设计。
我在想的是,与其在 CodeIgniter 中所做的那样,系统中的所有内容都共享一个 $this-> 对象,例如:
$this->load->model('box');
$this->box->something();
您将执行以下操作来加载 Box 模型并调用其 something() 方法。
$box = new Framework\Models\Box();
$box->something();
或以下
abstract class BaseController
{
public function getModel($name)
{
$model = new Framework\Models\$model(); //Is this valid code?
return $model;
}
}
class MyController extends BaseController
{
public function index()
{
$box = $this->getModel('box');
$box->something();
}
}
对于构建它有什么建议/指针,例如框架需要哪些最小系统类、我应该拥有哪些命名空间或任何其他功能?
【问题讨论】:
-
不要使用 OOP,因为你想使用 OOP,在有意义的地方使用它,而不是其他地方。对于 PHP 尤其如此。
-
您正在从事一项艰巨的工作,并得到许多其他人的支持。我建议您将这种强烈的精力投入到开发出色的应用程序中,或者做一个明显不同的(与普通的 MVC)框架。只是来自从事框架/平台设计约 10 年的人的建议。
-
或者,只要切换到 Python,你就永远不会回头(眨眼)。
-
为什么不看看一些 Java MVC 框架,看看它们是如何工作的?以春天为例……
-
我建议您使用比 PHP 更多的 OO 语言(如 Ruby 或 Python)。
标签: php oop codeigniter