php中可扩展的应用程序设计

时间:2015-09-04 17:54:08

标签: php software-design

我是一名初学者,正在尝试为我的学生建立一个社交网络。知道学校有超过1000名已经活跃的学生,我必须有一个扩展/扩展我写的代码的计划。

之前它只是LAMP堆栈,现在现代的Web开发比我看到的更多,我真的有点迷失在使用什么技术以及如何将它们合并到构建可扩展的应用程序。我希望将这个应用程序分成3层。

  • 应用层(phalcon,reddis,apache,php)[mvc api centric]
  • 数据库层(mysql)
  • UI图层 - (html / css / js /)

这是我需要帮助的地方,这种设计方法是否适用于可扩展的应用程序?哪里可以改善?任何解释,进一步阅读的链接将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

欢迎来到SO。我想不出一个特定的参考指南来引导你(虽然PHP manual是一个好地方,如果你最终坚持如何做某些具体的事情)。当你搜索"在PHP中开始使用MVC时,我建议你阅读一些结果"并注意到他们的意见。也就是说,看看下面我说的话(然后尽可能多地忽略它)。)。

首先,在启动项目之前,你比许多人更聪明地整理可扩展设计......

我很高兴在您的列表中看到Phalcon。然而,正如DevDonkey所建议的那样,首先从更简单的事情开始(Phalcon非常强大,但要真正掌握它,你需要很好地掌握PHP,特别是面向对象的编程)。

如果您对PHP完全不熟悉......

...尝试构建一个小应用程序(产品表,查看/添加/编辑/删除功能)并以this answer建议的方式学习语言的开头。事情会出错,当你想要改变一个特征时,你会发现很多令人头疼的问题而且它会影响其他一切,但这会帮助你理解......的重要性。

MVC设计

从你的问题我可以看到你至少听说过这个。这实际上是应用程序层的所在:

  • 模型 - 通过此处理与数据库的交互(检索/编辑数据)。所以你可以拥有一个MYSQL数据库,然后你的模型提供了一个很好的界面来与数据交互(通常每个表都有一个模型)。
  • 查看 - 这是用户看到的最后一层。所以你将在这里使用你的html / css / js知识。关于这个主题,除非你真的想自己做css,否则考虑使用 CSS Framework ,例如Bootstrap。这将真正有助于加快您的网站看起来很好,并且有大量免费模板可供使用。
  • Controller - 这是应用程序逻辑。控制器通过模型请求/操作数据,然后决定将哪些内容发送到视图以进行渲染。

使用框架?

使用良好的框架可以使您的应用程序更可靠,更快速地构建。但是使用一个框架而不理解它将会令人沮丧,缓慢并且可能导致更糟糕的代码,而不是如果你没有开始使用它(因为你使用hacks来绕过你不喜欢的框架的部分)了解)。我目前最喜欢的是Phalcon,但作为PHP的相对初学者,我会建议更像CakePHP的内容,尽管LaravelSymfony也很受欢迎。

<强>摘要

  • 从小处着手,学习,测试想法,然后建立一个更大的项目。
  • 在使用框架之前,习惯使用PHP(包括OOP样式)。
  • 使用MVC框架

你在问题​​中列出的图层是好的,但我会稍微区分它们(考虑到MVC是3层)

  • 应用层 - 用PHP编写的控制器处理逻辑/操作,通常是最大的层
  • 数据库层 - 用PHP编写的模型,您还需要一个可以使用您喜欢的数据库语言的数据库--MySQL;)
  • UI Layer - 视图,可能用PHP编写(取决于框架),但也可以用HTML,CSS和JS以及模板语言(例如TwigVolt) ,本质上是一种让控制器的响应更适合人类的方法

第一个项目(适用于CakePHP)

如果您决定使用CakePHP,

This blog tutorial是一个很好的起点。

Phalcon入门

Phalcon功能更强大/更具功能性,但是要开始使用它,我觉得你必须要成为比开始使用像CakePHP这样的东西更好的PHP开发人员。花点时间了解Phalcon的每个新概念,尤其是Dependency Injection

即使过去两年使用CakePHP并熟悉MVC模式和PHP,我仍然在Phalcon的tutorials中完成了所有7个。

话虽如此,我最喜欢Phalcon的事情是高度解耦 - 所以如果它没有&#39,那么用你自己的扩展替换它的相当容易(过一段时间)你完全可以做你想做的事。

关于Phalcon的注意事项:它不像许多其他框架那样受欢迎(尽管人气越来越高),所以当你遇到困难时,你可能不得不花一些时间去挖掘。但是,文档一直在不断改进,forum非常活跃。不幸的是,与许多其他框架相比,在StackOverflow上回答有关它的问题仍然很少。