Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单php框架的最佳类结构是什么?_Php - Fatal编程技术网

简单php框架的最佳类结构是什么?

简单php框架的最佳类结构是什么?,php,Php,我正在尝试创建简单的php框架。但是我不确定类结构,例如哪些类应该扩展到哪些类。首先我知道一些基本类,比如路由器,视图类必须访问一些基本数据,如请求的url或请求的ccontroller和操作,因此我如何才能将基本数据导入这些类。如果我的问题不清楚,请解释您自己关于框架的经验和想法。或者如果您知道,请谈一谈已知的框架工作,如zend,cakephp或symfony没有最好的类结构。这取决于你想做什么。你是说最纯粹的MVC设计吗?最可测试的?最容易理解?有一个简单的经验法则: 或者您有一个标准框架

我正在尝试创建简单的php框架。但是我不确定类结构,例如哪些类应该扩展到哪些类。首先我知道一些基本类,比如路由器,视图类必须访问一些基本数据,如请求的url或请求的ccontroller和操作,因此我如何才能将基本数据导入这些类。如果我的问题不清楚,请解释您自己关于框架的经验和想法。或者如果您知道,请谈一谈已知的框架工作,如zend,cakephp或symfony没有最好的类结构。这取决于你想做什么。你是说最纯粹的MVC设计吗?最可测试的?最容易理解?

有一个简单的经验法则:

或者您有一个标准框架无法满足的需求 或者,您应该使用一个好的标准框架来满足您的需要。 在第一种情况下,限制将是您设计中的驾驶方面

框架中的类结构没有通用的设计规则。但是,如果你决定自己写一本,请记住这一点:

最小化模块之间的依赖关系 始终尝试给出默认值 尽量减少开销 与同龄人进行大量讨论,尽早发现缺陷。
如果你从未在别人的框架内工作过,你将不知道什么想法对你有用,什么不有用。如果您只使用过无组织的意大利面代码,那么您将对什么对您有意义有所了解。如果您在多个不相关的项目中对分解的意大利面代码进行了实质性的重新组织,那么您应该对构建框架的思路有一个很好的了解:-

如果您对如何编写框架没有明确的想法,但是您想编写一个框架,我认为您需要从零开始,并以有机的方式构建它。但是,您应该知道您希望它看起来是什么样子,即使它像您希望包含文件的位置一样愚蠢。换句话说,你所需要的只是一个起点。然后,当你遇到丑的时候,就要重新考虑它。不久,您将拥有一个数据库处理程序、一个调度机制、一个数据访问层,甚至一个模板系统

不过,在回复@MrFox时,您应该意识到危险的依赖性。显然,数据访问层将依赖于数据库处理程序;所以,您不希望数据库处理程序依赖于数据访问层。事实上,你也不希望他们彼此有亲密的了解。它应该是一个合理的黑盒接口


此外,许多框架试图构建一个对象继承权。这意味着他们认为一个动作就是一个模型就是一个数据库处理程序。我个人对这个错误应用的抽象有问题,所以这是一个警告,如果这个想法对你也不起作用的话,不要害怕拒绝它。正如@Tyndall所说,没有一个单一的正确方法可以做到这一点。

复制SO中的大约100个其他问题,从这一个开始:最可改进的基本功能,如路由、模板、布局、身份验证、Mvc、控制器插件。不适用于博客等自用的大型项目,cms脚本我不想在类之间建立很多不必要的关系。我想我可以把类分为两类。第一类是基本类,如路由器类或视图类。这些类不能访问其他类的数据。第二个类是使用其他类的组,例如前端控制器。例如,前端控制器可以访问其他人的数据,他们可以调用其他方法。例如,当调用前端控制器的dispatch方法时,前端控制器调用其他类的必要方法,例如router类的route方法或render类od view类