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

Scalable app design in php

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

早些时候它只是 LAMP 堆栈,现在现代 Web 开发远不止于此,我真的有点迷失在使用什么技术以及如何将它们结合起来构建一个可扩展的应用程序。我希望将此应用程序分为 3 层。

这是我需要帮助的地方,这种设计方法适合可扩展的应用程序吗?我可以在哪里改进?任何解释,进一步阅读的链接将不胜感激。

欢迎来到 SO。我想不出一个特定的参考指南来指导您(尽管如果您最终对如何做一些特定的事情感到困惑,PHP manual 是一个好地方)。我建议您在搜索 "Getting started with MVC in PHP" 时阅读一些结果,并注意他们同意的内容。就是说,看看我下面说的(然后尽可能忽略它;))。

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

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

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

...尝试构建一个小型应用程序(产品 table、view/add/edit/delete 功能)并按照 this answer 建议的那样学习语言的开头部分。事情会出错,当你想改变一个功能时你会发现很多令人头疼的事情,它会影响其他一切,但这将帮助你理解......

的重要性

MVC设计

从你的问题来看,你至少听说过这个。这确实是您的应用程序层所在的位置:

  • Model - 与数据库的交互(retrieving/editing 数据)通过它来处理。所以你可以有一个 MYSQL 数据库,然后你的模型提供了一个很好的接口来与数据交互(通常每个 table 你都有一个模型)。
  • View - 这是最后一层,用户看到的。因此,您将在这里利用您的 html/css/js 知识。在这个话题上,除非你真的想自己做 css 考虑使用 CSS 框架 例如 Bootstrap。它确实有助于加快使您的网站看起来不错的速度,并且有大量免费模板可供使用。
  • Controller - 这是应用程序逻辑。控制器 request/manipulate 数据通过模型,然后决定将什么发送到视图进行渲染。

使用框架?

使用好的框架可以使您的应用程序更可靠,构建起来更快。但是在不理解框架的情况下使用它会令人沮丧、缓慢,并且可能会导致比一开始就没有使用框架更糟糕的代码(因为你使用 hack 来绕过你不理解的框架部分)。我目前最喜欢的是 Phalcon,但作为 PHP 的相对初学者,我建议更像 CakePHP,尽管 LaravelSymfony 也很受欢迎。

总结

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

你在问题中布置的层次很好,但我会稍微不同地划分它(考虑到 MVC 是 3 层)

  • 应用层 - 控制器,用 PHP 编写,处理 logic/manipulation,通常是最大的层
  • 数据库层 - 模型,用 PHP 编写,您还需要一个数据库,它可以是您最喜欢的数据库语言 - MySQL ;)
  • UI 层 - 视图,可能用 PHP 编写(取决于框架),但也有 HTML、CSS 和 JS 以及模板如果您愿意,可以使用语言(例如 Twig or Volt),本质上是一种使控制器的响应对人类友好的方法

第一个项目(蛋糕PHP)

如果您决定使用 CakePHP.

This blog tutorial 是一个很好的起点

Phalcon 入门

Phalcon 更 powerful/verstile,但要开始使用它,我觉得您必须成为比开始使用 CakePHP 之类的东西更好的 PHP 开发人员。花点时间理解 Phalcon 的每个新概念,尤其是 Dependency Injection.

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

话虽如此,我最喜欢 Phalcon 的一点是它 高度解耦 - 所以很容易(一段时间后)用您自己的扩展替换它的一些部分如果它不能完全满足您的要求。

关于 Phalcon 的注意事项: 它不像许多其他框架那样流行(尽管流行度在增长),因此当您遇到困难时,您可能不得不花一些时间四处挖掘。然而,文档一直在改进,forum 非常活跃。不幸的是,与许多其他框架相比,在 Whosebug 上回答有关它的问题的人数仍然很少。