Cli*_*ote 4 php oop codeigniter
我一直在使用CodeIgniter框架,但是在学习Java和界面,抽象类,包等很棒的功能之后,PHP 5也支持大部分这些功能,我已经准备好毕业并用PHP 构建一个真正的 OO框架.使用所有这些功能(包括命名空间),因此我可以构建更优雅的设计.
我在想的是,系统中的所有内容都$this->不像在CodeIgniter中那样共享一个对象,例如:
$this->load->model('box');
$this->box->something();
Run Code Online (Sandbox Code Playgroud)
您将执行以下操作来加载Box模型并调用其something()方法.
$box = new Framework\Models\Box();
$box->something();
Run Code Online (Sandbox Code Playgroud)
或者以下
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();
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何关于构建它的建议/指针,例如框架需要哪些最小系统类,我应该具有哪些命名空间或任何其他功能?
nul*_*ull 11
我注意到的一件事是,框架通常是为特定目的而构建的.通用框架(如CodeIgniter)适用于较小的站点,可以快速启动和运行.然而,一旦你有了特定的东西,这些东西不属于通用框架,你自己的构建就成了现实.
我唯一建议的是保持一致.这是无情的一致.如果您决定在camelCase中命名,那么请不要偏离.或者,如果您决定使用NounVerb命名方法的约定,即使当时"听起来"更好,spaceJump也不要切换到jumpSpace.
选择接受参数的方式并保持一致.您是否只接受参数或参数的关联数组?选择并坚持下去.
在你写任何东西之前我也不会过度工程.在你需要重构之前,一致性事情会带你到很远...但我也不会害怕这样做.(一两个单元测试应该可以减轻这些担忧).
是的,只要你保持一致,通常没有正确或错误的做事方式.我提到了......
始终如一!
构建技术框架(没有冒犯)需要很多经验,并且已经有1 000个CMS /基础对象(会话管理,ORM等)framworks/library.
你最好不要浪费宝贵的时间(不再冒犯),而是: