Cli*_*ote 40 php oop software-design
请与我分享您最喜欢的应用程序设计/设计模式以供PHP使用.我想知道的一些事情:
您无需回答所有这些,回答其中任何一个或几个都会有所帮助.
我问这个的原因是因为我已经厌倦了在PHP中编写重复的,丑陋的代码而我想为我的自由职业项目制作一个小框架,这将使编程更容易,让我专注于挑战/业务任务而不是形成验证,分页和其他平凡的活动,这些活动占PHP编程工作的80%
所有意见赞赏!
Vir*_*dia 71
我可能会为此投票,但如果你真的想写自己的框架,我会说,因为你将从经验中学到很多东西.这里提到的其他框架都很棒且经过测试,您不会使用它们做出错误的决定,但这是您的选择.
在开始编写框架之前,先看看其他框架(根据它们的语法,目录结构,命名模式,设计模式等),然后尝试弄清楚为什么他们会做他们做了什么以及做什么,如果有的话,你会做不同的事情.尝试一些教程并使用他们的代码,制作一些示例应用程序.如果在执行此操作之后,您不喜欢使用它们,那么请继续并开始规划您的框架,保持有效的工作并改进未完成的工作.
如果您决定自己动手,我会根据自己的经验推荐以下几点:
rye*_*guy 13
我必须同意上述海报.如果你在使用PHP进行编程时没有使用框架,那么你的双手背后就会编程.我个人推荐CodeIgniter.它是最快的框架,它非常容易学习,并且拥有一个非常活跃的社区.框架将回答您的所有问题:
* How your folders are designed
Run Code Online (Sandbox Code Playgroud)
CodeIgniter(或任何相关框架)将您的逻辑分为视图,模型和控制器,每个视图都有自己的文件夹.
* Do you have a standard way of dealing with CRUD, pagination, or any other common tasks?
Run Code Online (Sandbox Code Playgroud)
CI有一个分页库,它有第三方库,如DataMapper,用于以面向对象的方式(ORM)包装CRUD调用.
* What are ways in which you can make your code more elegant?
Run Code Online (Sandbox Code Playgroud)
模型,视图和控制器的分离使得代码非常优雅.
(使用框架时,我没有回答的两个问题非常隐含)
我想很多php开发人员都遵循类似的路线:小脚本 - >程序/内联代码 - >可能看一下模板 - > OOP - >然后是框架.我认为PHP开发人员可以通过PHP"成长",学习设计模式以匹配当前版本的可用功能.
MVC是当今流行框架中最常用的设计模式.CakePHP是我选择的框架,虽然Symphony和Zend也非常受欢迎 - 非常值得尝试一些,很快你会觉得最舒服.
对于大多数项目(快速开发和可移植代码是优先考虑的事项),我使用Cake,但对于轻量级应用程序(我最近开发的是Good Baad),您希望快速运行(在低规格硬件上)并且不需要由一个大框架的功能添加的批量/重量我建议阅读Rasmus Lerdorf关于他的No Framework PHP MVC框架的文章.
基本上,如果你追求一种真正的面向对象的语言,鼓励漂亮的代码和最好的设计实践PHP总是会失去Ruby Python和C#等.但是,PHP有其优势,例如不需要模板语言(它是一个),PHP可以非常快速和廉价地运行,并且不需要所有应用程序的大框架的重量.
我鼓励采用一种设计模式,它采用像MVC这样的设计模式的可管理性,并将其与PHP的优势结合起来.
我几乎感觉像是一个破纪录,但我建议你看一些常见的框架有两个原因:
说到使用可以轻松扩展的框架,我对Zend Framework有了非常积极的体验.它具有内聚性和松散耦合的结构,可以快速,轻松地扩展任何现有组件,整个框架的设计理念是您需要编写自己的帮助程序和插件类来添加其整体功能.
我发现Zend Framework是如此完全灵活,以至于我运行一个网站作为Zend Framework MVC的一部分,并且是我旧的糟糕框架,甚至是我还没有重写过的更老的代码.事实上,因为在重写过程中我们发现一个页面使用旧框架运行速度慢得令人无法接受,我已经将单个页面切换到Zend Framework架构下运行.
为了回答您的一些问题,我建议您查看Martin Fowler的企业应用程序架构模式.他提供了许多有关如何解决许多常见问题的宝贵见解,例如如何在应用程序中创建数据库交互层.Fowler还涵盖了MVC和Front Page Controller等主题.