在php中构建自己的“小框架”

时间:2013-01-25 12:34:51

标签: php model-view-controller singleton project structure

背景/ IDEA
我目前正在研究一个小框架,以提高我的PHP知识。该框架应该非常简单(最小化开销)并且在以后的扩展方面具有灵活性。

不同的含义
阅读更高级的教程,严肃的PHP开发人员,不同的类结构(单身人士,单身人士,依赖注入,JIT,...),oop,mvc,路由,缓存...以及更多我发现的结果很难过滤“正确的方法”(如果有的话),因为在我看来每个人都说不同的东西。

许多人称赞那里的“最好”,并说从那里开始的一切都是邪恶的。在我看来,没有正确或错误。只有几种方法可以实现一个目标。

我发的是什么

  • index:ini设置,定义常量,调用bootstrap(不是oop)
  • 启动:自动加载器类,命名空间(按需包含文件)
  • 静态类:htmlManager,fileHandler,databaseManager,...
  • 单身人士:无
  • 非静态类:控制器,模型,视图,路线......

我知道这是非常基本的,到目前为止我没那么多,但我想先创建一个坚实的平台。

问题
在我想进一步完成项目之前,我很想听听你对下面列出的事情的看法。

  • 您如何组织/组织小型甚至更大的项目?
  • 您在简化,逻辑,性能,可读性,可扩展性和代码可重用性方面的经验是什么?
  • 是否真的有一种“正确的编码方式”或者这只是解释?
  • 有什么不应该使用的,因为它已经过时了吗?

我不想听到的内容

  • 忘记框架或php
  • 不要这样做,不要在没有说出原因
  • 的情况下这样做

非常感谢我之前收到的所有回复。

2 个答案:

答案 0 :(得分:2)

  

我目前正在研究一个小框架,以提高我的PHP知识。该框架应该非常简单(最小化开销)并且在以后的扩展方面具有灵活性。

去吧。

  

阅读更高级的教程,严肃的php开发人员,不同的类结构(单身人士,单身人士,依赖注入,JIT,...),oop,mvc,路由,缓存......等等。我觉得很难过滤“正确的方法”(如果有的话),因为在我看来每个人都说不同的东西。

那是因为有些人不理解为什么某些东西应该以某种方式解决,或者为什么某些东西是可怕的做法,但是他们在一些框架上看到了什么,他们认为这是切片面包以来最好的东西。

虽然意见可能会有所不同,但如果您追求的是这样,那么您就无法与干净的代码和适当的OOP争论。在适当的OOP单身人士和static s没有地方。另外大多数人称之为MVC实际上是对模式的一些错误观点(主要是因为他们再次看到某些框架以某种方式做到了)。这并不总是坏事,但不是 MVC。

  

许多人称赞那里的“最好”,并说从那里开始的一切都是邪恶的。在我看来,没有正确或错误。只有几种方法可以实现一个目标。

在我看来,并非所有不是最好的东西都是可怕的。但有些东西只是不好的做法。并且某些模式的定义方式使您的应用程序更易于维护,调试和测试。如果你打算实现一些对我来说都很好的其他模式,但是你会失去其他模式带来的好处。

一般来说,我在进行OOP编程时使用的第一个经验法则是遵循SOLID principles

  

静态类:htmlManager,fileHandler,databaseManager,...

这些没有适当的OOP。其中因为将紧密耦合类。这使得可维护性,可读性和可测试性变得很痛苦。

  

单身人士:无

很好,因为它们只是一种幻想global

  

您如何组织/组织小型甚至更大的项目?

将两个代码中的关注点分离为结构。其中一个模式可以帮助您:MVCMVP,[MVVM](模型视图ViewModel)。就我个人而言,我最喜欢MVC模式,因为它对其他模式有一些很好的好处。

  

您在简化,逻辑,性能,可读性,可扩展性和代码可重用性方面有哪些经验?

可读性和可测性是最重要的。 紧接着那个SOLID(也由第一个点(重叠)处理)

  1. 是否真的有一种“正确的编码方式”或者这只是解释?
  2. 有什么不应该使用的,因为它已经过时了吗?
  3. 性能
  4.   

    忘记框架或php   不要这样做,不要在没有命名原因的情况下这样做

    正如我之前所说:只是去吧。做它并搞砸了!最好的学习方法实际上是做到这一点并犯下可怕的错误。我认为我1年前制作的框架(虽然imho仍然比那里的90%好)是一个合适的废话™。

答案 1 :(得分:0)

  

您如何组织/组织小型甚至更大的项目?

许多PHP框架都使用MVC结构。

  

您在简单性,逻辑性,性能方面的经验是什么?   可读性,可扩展性和代码的可重用性?

除了严格遵循MVC之外,我还建议遵循KISS和DRY等原则。我不认为性能是一个高优先级的主题。您可以稍后熟悉缓存策略和优秀算法(一般主题,而不是PHP)。

  

是否真的有一种“正确的编码方式”或者只是这样   解释

有些内容可以被视为最佳做法,您会在Zendsymfony等热门框架上找到许多提示。

  

有什么不应该使用的,因为它已经过时了吗?

你必须自己找出答案。您可以跳过编写数据库处理并使用ORML库,如doctrine或propel。您可以为视图表示选择特殊的模板引擎,如twig或smarty。

  

不要这样做,不要在没有说出原因

的情况下这样做

我认为所有长期的PHP程序员都至少启动过一次自己的框架,没有任何反对意见,尤其是如果你想提高自己的知识。