poo*_*poo 18 php model-view-controller
我想在PHP中从头开始实现MVC,因为我希望完全控制自己的代码,而不需要现有框架的额外包装.谁有任何建议?
是的,我已经看过Lerdorfs的文章,看起来它毕竟不是那么多代码.实际上我更希望有一个控制器视图解决方案来构建我的应用程序.我会坚持自己的自制PDO数据访问类.
Gor*_*don 20
你的问题有点像未发明的这里综合症.在这种情况下,我的建议是,当您可以确定它们经过全面测试和支持时,可以使用现有框架的额外包袱.不要重新发明轮子.
另一方面,上述论证将阻止编写新的框架.而从头开始编写一个是一个很好的锻炼编码学习和了解MVC模式.
所以,如果你真的决定这样做,我的建议是要了解MVC的每个部分是什么,做什么以及它们如何相互作用.你也不可避免地遇到FrontController模式,所以你也想要了解这个.
请注意,您不是唯一想要这样做的人:
Rasmus Lerdorf也有这篇有趣的文章
一个简单的MVC实现(只是为了理解原理)
class Thing
{
//class code ( CRUD, the application logic ...)
}
Run Code Online (Sandbox Code Playgroud)
<?php require("header.php");?>
//HTML CODE with some echo to show variables and loops to read arrays
<?php require("footer.php");?>
Run Code Online (Sandbox Code Playgroud)
require_once("lib/Thing.class.php");
/*
Some controls between the Model and the View ( if/else ...)
*/
include("theme/page_thing.php");
Run Code Online (Sandbox Code Playgroud)
我也用PHP编写了一个自行开发的MVC框架.它非常简单,特别是当您从框架中删除任何"ActiveRecord"功能时.我考虑过的一些事情:
我没有按惯例做事(/ foo映射到FooController),而是通过配置完成了所有工作.也就是说,我有一个master routes.php文件,其中列出了我的应用程序将接受的每个可能的URL.所以它充满了这样的东西:
Router::add( '/foo/:Param1/:Param2',
array( 'Controller' => 'MyController',
'Action' => 'my_method',
'Method' => 'GET',
'Parameters' => array( 'Param1' => '\d+',
'Param2' => '\S+' ) );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们匹配网址/foo/123/abc.匹配URL时,将调度为MyController::my_method( array( 'Param1' => '123', 'Param2' => 'abc' ) );.
那里有很多模板系统.但实际上,PHP已经是一个完美的模板系统.在我的框架中,我刚刚function template()在顶级Controller类中创建了一个.这一切归结为表演include $Template.同样,在我的框架中,没有惯例.每个控制器负责实例化相应的模板,并了解请求是否期望HTML,XML或JSON作为响应.
我的很多代码都是受到着名的PHP MVC框架Cake的启发.在你走向远方之前,我肯定会看一眼.如果您打算自己动手,至少首先要了解所有流行的工作方式.最后,我的应用程序的特殊要求让我走上了自己构建的道路,但是从那里已经存在的所有框架中可以学到很多东西.仔细看看,你可能会发现一些适合你的东西.最起码,你可以计算出你需要出正是您的框架.
小智 6
我个人使用自己的框架组成:
1.Mysql接口
2.Template系统(是的家酿造不聪明)
3.Config类(mysql详细信息,调试,以及脚本可能需要的任何其他内容)
4.Simple
Form Creating class.
5.a请求类(来自$ _SERVER的所有有用详细信息,格式更易读:$ this-> Request-> ip,$ this-> Request-> url,$ this-> Request-> time)
6.黑客攻击(Ip黑名单,公共秒扫描仪等关键字)
我只是称它为框架:)
| 归档时间: |
|
| 查看次数: |
22794 次 |
| 最近记录: |