php中的可伸缩应用程序设计

php中的可伸缩应用程序设计,php,software-design,Php,Software Design,我是一名php初学者,正在尝试为我的学生建立一个社交网络。知道学校有1000多名学生已经在积极学习,我必须有一个扩展/扩展我编写的代码的计划 早些时候,它只是一个灯塔,现在的现代网络开发远不止如此,正如我所看到的,我真的有点迷失在使用什么技术以及如何结合它们来构建一个可伸缩的应用程序。我希望将此应用程序分为3层 应用层(phalcon、reddis、apache、php)[以mvc api为中心] 数据库层(mysql) UI层-(html/css/js/) 这就是我需要帮助的地方,这种设计

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

早些时候,它只是一个灯塔,现在的现代网络开发远不止如此,正如我所看到的,我真的有点迷失在使用什么技术以及如何结合它们来构建一个可伸缩的应用程序。我希望将此应用程序分为3层

  • 应用层(phalcon、reddis、apache、php)[以mvc api为中心]
  • 数据库层(mysql)
  • UI层-(html/css/js/)

这就是我需要帮助的地方,这种设计方法适合于可伸缩的应用程序吗?我在哪里可以改进?我们将非常感谢您的任何解释和进一步阅读的链接。

欢迎访问。我想不出有什么特别的参考指南可以指引你去(尽管如果你最终被困在如何做一些具体的事情上,这是一个很好的地方)。我建议您在搜索“PHP中的MVC入门”时阅读一些结果,并注意他们的一致意见。也就是说,看看我下面说的话(然后尽量忽略它;)

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

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

如果您完全不熟悉PHP…

。。。尝试构建一个小应用程序(products table,view/add/edit/delete功能),并按照建议以这种方式学习语言的起源。当你想改变一个功能时,事情会出问题,你会发现很多令人头痛的事情,它会影响其他一切,但这将帮助你理解

MVC设计

从你的问题中我可以看出你至少听说过这件事。这就是应用程序的层所在:

  • 模型-与数据库的交互(检索/编辑数据)通过该模型进行处理。所以您可以拥有一个MYSQL数据库,然后您的模型提供了一个很好的接口来与数据交互(通常每个表有一个模型)
  • 视图-这是用户看到的最后一层。因此,您将在这里利用您的html/css/js知识。在这个主题中,除非您真的想自己做CSS,否则请考虑使用<强> CSS框架< /强>。这将真正有助于加快使你的网站看起来很好,有免费的模板负载在那里使用它
  • 控制器-这是应用程序逻辑。控制器通过模型请求/操作数据,然后决定将什么发送到视图进行渲染
使用框架?

使用一个好的框架可以使您的应用程序更可靠,构建速度更快。但是使用一个框架而不理解它将是令人沮丧的、缓慢的,并且可能会产生比不使用框架更糟糕的代码(因为你使用黑客绕过你不理解的框架片段)。我目前最喜欢的是PHP,但作为PHP的相对初学者,我建议使用类似的东西,尽管两者都很流行

摘要

  • 从小事做起,学习、测试想法,然后逐步发展成为一个更大的项目
  • 在使用框架之前,先熟悉使用PHP(包括OOP风格)
  • 使用MVC框架
您在问题中列出的层是好的,但我将以稍微不同的方式进行划分(考虑到MVC是3层)

  • 应用层-控制器,用PHP编写,处理逻辑/操作,通常是最大的层
  • 数据库层-模型,用PHP编写,您还需要一个数据库,它可以是您最喜欢的数据库语言-MySQL;)
  • UI层-视图,可能是用PHP编写的(取决于框架),但也可以是HTML、CSS和JS以及模板语言(如果您愿意)(例如或),本质上是一种让控制器的响应对人来说很好的方法
第一个项目(针对CakePHP)

如果您决定使用CakePHP,这是一个很好的起点

开始使用Phalcon

Phalcon更强大/verstile,但要开始使用它,我觉得你必须是一个比CakePHP更好的PHP开发人员。花点时间了解Phalcon的每个新概念,尤其是

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

话虽如此,我对Phalcon最喜欢的是它是高度解耦的——因此,如果它不能完全满足您的需要,用您自己的扩展来替换它是相当容易的(一段时间后)


关于Phalcon的注意事项:它不像许多其他框架那样受欢迎(尽管受欢迎程度正在增长),因此当你陷入困境时,你可能不得不花一些时间四处挖掘。然而,这些文档一直在改进,并且非常活跃。不幸的是,与许多其他框架相比,在StackOverflow上回答关于它的问题的人数仍然很少。

您需要找到一个灵活的MVC框架,例如,并从那里开始。另外,我建议,作为一个初学者,你可以选择一个不太复杂的项目来找到你的脚。类似的东西是一个很好的开始。@DevDonkey谢谢,我对OOP有点熟悉,我完全理解MVC,尽管我觉得在我的小项目中不需要使用它。如果我理解OOP,我可以使用phalcon吗?谢谢。提前谢谢你的解释,这是纯围棋