在PHP中构建真正的面向对象框架,需要建议
我一直在使用CodeIgniter框架,但是在学习了Java和一些很棒的特性,如接口、抽象类、包,以及PHP5也支持大多数这些特性之后,我准备毕业并在PHP中构建一个真正的OO框架,它使用了所有这些特性(包括名称空间),所以我可以设计出更优雅的设计 我想的是,不是系统中的所有东西都共享一个在PHP中构建真正的面向对象框架,需要建议,php,oop,codeigniter,Php,Oop,Codeigniter,我一直在使用CodeIgniter框架,但是在学习了Java和一些很棒的特性,如接口、抽象类、包,以及PHP5也支持大多数这些特性之后,我准备毕业并在PHP中构建一个真正的OO框架,它使用了所有这些特性(包括名称空间),所以我可以设计出更优雅的设计 我想的是,不是系统中的所有东西都共享一个$this->对象,就像它在CodeIgniter中完成的一样,例如: $this->load->model('box'); $this->box->something(); 要加载框
$this->
对象,就像它在CodeIgniter中完成的一样,例如:
$this->load->model('box');
$this->box->something();
要加载框
模型并调用其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();
}
}
对于构建这个框架,是否有任何建议/建议,例如我需要框架的最小系统类、我应该拥有什么名称空间或任何其他功能?构建技术框架需要大量经验(无意冒犯),而且已经有1000个CMS/基本对象(会话管理、ORM等)framworks/图书馆 与其浪费宝贵的时间(再次无意冒犯),不如:
我注意到的一点是,框架通常是为特定目的而构建的。通用框架(如CodeIgniter)适用于较小的站点,并能快速启动和运行。然而,一旦你有了特定的东西,这些东西不属于构建你自己的通用框架,它就成为了现实 我唯一建议的是要始终如一。这是始终如一的。如果你决定在camelCase中命名事物,那么不要偏离这一点。或者,如果您决定使用命名方法的名词动词约定,即
spaceJump
,则不要切换到jumpSpace
,即使它当时“听起来”更好
选择接受参数的方式,并在这方面保持一致。您只接受参数还是参数的关联数组?选择并坚持它
在你写任何东西之前,我也不会过度设计。在你需要重构之前,一致性问题会让你走得很远。。。但我也不怕这么做。(一两次单元测试可以缓解这些担忧)
是的,只要你始终如一,做事就没有对错之分。我有没有提到
保持一致您可以构建自己的库,但为什么不利用框架提供的大量库,并在需要时扩展它们的功能呢 为什么不看看Zend框架呢 它的入门速度相当快,包括许多有用的库和类作为标准。如果你只是想获得更多的OOP经验,那么这对个人项目是很好的 我想看看。它来自于Codeignator,加载模型等就是按照您提出的方式完成的 查看它们的核心功能,其中许多与您的问题直接相关(我已经强调了这些功能): 科哈纳有什么不同 尽管Kohana重用了许多常见的设计模式和概念,但有一些东西使Kohana脱颖而出:
不要因为想要使用OOP而使用OOP,在有意义的地方使用它,而不要在其他地方使用它。这对于PHP来说尤其如此。您正在进行一项巨大的工作,这项工作已经做得很好,并且得到了许多其他人的支持。我建议您将这巨大的精力投入到开发很棒的应用程序中,或者做一个与普通MVC截然不同的框架。这只是一个从事框架/平台设计10年的人的建议。或者,换成Python,你就再也不会回头了(眨眼)。为什么不看看一些Java MVC框架,看看它们是如何工作的呢?例如,Spring…我建议您使用比PHP更多的OO语言(如Ruby或Python)。一个只包含业务逻辑的框架。Take stackoverflow:构建/扩展框架以