从开发到生产的MVC架构

时间:2015-05-03 22:55:22

标签: php model-view-controller

我正在努力更好地理解MVC架构。我使用LAMP堆栈编写前端和后端Web应用程序。我还没有使用任何框架。我在Notepad ++中编码并使用WinSCP进行文件传输(Putty for terminal)。所有服务器端编码都是用PHP完成的。

根据我所做的阅读,这是我对MVC文件结构的最佳猜测:

+ -- Project1
|    + -- models
|    |    + -- model.php
|    + -- views
|    |    + -- view.php
|    + -- controllers
|    |    + -- controller.php
+ -- Project2
|    + -- models
|    |    + -- model.php
|    + -- views
|    |    + -- view.php
|    + -- controllers
|    |    + -- controller.php

所以,虽然有很多关于模型,视图和控制器的文章和博客,但我还没有看到任何关于如何将其设置为我上面收集的内容。

我不知道这是如何与我服务器上的公共文件夹相关联的。这是我的猜测,假设/var/www/html/是我的公共目录。

+ -- var
|    + -- www
|    |    + -- html
|    |    |    + -- my-application-1.php
|    |    |    |
|    |    |    + -- my-application-2.php
|    |    + -- Project1
|    |    |    + -- models
|    |    |    |    + -- model.php
|    |    |    + -- views
|    |    |    |    + -- view.php
|    |    |    + -- controllers
|    |    |    |    + -- controller.php
|    |    + -- Project2
|    |    |    + -- models
|    |    |    |    + -- model.php
|    |    |    + -- views
|    |    |    |    + -- view.php
|    |    |    + -- controllers
|    |    |    |    + -- controller.php

我根据我读过的内容(也许我错了)假设人们将整个项目“置于”公共文件夹之后。我还假设你把你的最终申请文件(my-application1.phpmy-application-2.php),放在公共文件夹中供互联网上的人使用,并参考(php的include / { {1}})该应用程序文件中的模型,视图和控制器。我从未在我的公共文件后面引用文件,但我在这里假设很多。

有人可以为我验证这些吗?这应该如何设置与我的Linux服务器的其余部分相关?我有什么假设是不正确的,你需要纠正吗?

在我选择任何框架(可能倾向于Zend,Laravel或CakePHP)之前,我试图对此有一个很好的理解。我已经读到框架有助于此,但我目前没有资源来设置框架,我想在尝试向我的团队宣传之前全面了解这一点。

2 个答案:

答案 0 :(得分:2)

它非常依赖于您选择使用的框架,但一般的想法是实际的源目录不存储在Web根目录中。我在部署中使用/web/projects,然后将公用文件夹符号链接到htdocs

> cd /var/www/html
> ln -s /web/projects/myProject/public myproject

然后,您通常会在公共文件中有一个index.php文件,可以解决问题。通常还有.htaccess文件拦截所有请求并将其指向该文件。

最好的选择是选择一个框架(Laravel和Symfony是很好的选择),并按照入门指南进行操作。

答案 1 :(得分:2)

你在问题​​中说你没有足够的资源建立一个框架,但是你需要资源从头开始构建一个框架,而你甚至不知道你在做什么?

相信我,你不想自己做。至少,你应该首先尝试一些现有的框架,如symfony2或zf2或任何你喜欢的。

当您熟悉其中的一些并了解它们的工作原理时,您将能够创建自己的工作并放弃它所需的大量工作。

无论如何,要回答这个问题,这里是zend框架1的结构

project
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php

使用此框架,您可以将您的Web根目录设置为/path/to/project/public。 如您所见,没有任何应用程序代码可以直接从Web访问。所有传入的请求都来自index.php所有的魔法。

如果你有兴趣了解真正的神奇之处,那么所有的php web框架都是开源的,所以请随意查看:

ZF2 on github

Sf2 on guthub