从开发到生产的 MVC 架构
MVC Architecture from Development to Production
我正在努力更好地理解 MVC 体系结构。我使用 LAMP 堆栈编写前端和后端 Web 应用程序。我还没有使用任何框架。我在 Notepad++ 中编写代码并使用 WinSCP 进行文件传输(终端用 Putty)。所有服务器端编码都在 PHP.
中完成
根据我的阅读,这是我对 MVC 文件结构的最佳猜测:
+ -- Project1
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
+ -- Project2
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
因此,虽然有很多关于什么是模型、视图和控制器的文章和博客,但除了我在上面收集的内容之外,我还没有看到任何关于如何设置它们的信息。
我不知道它是如何与我服务器上的 public 文件夹集成的。这是我的猜测,假设 /var/www/html/
是我的 public 目录。
+ -- 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
根据我读到的内容(也许我错了),我假设人们将他们的整个项目 "behind" 放在他们的 public 文件夹中。我还假设您将最终的申请文件(my-application1.php
或 my-application-2.php
)放在您的 public 文件夹中供互联网上的人使用,并参考(php 的 include
/require
) 您的模型、视图和控制器来自该应用程序文件。我从来没有在我的 public 文件后面引用过文件,但我在这里假设了很多。
有人可以帮我验证一下吗?相对于我的 linux 服务器的其余部分应该如何设置?我假设有什么不正确的地方需要您更正吗?
我试图在选择任何框架(可能倾向于 Zend、Laravel 或 CakePHP)之前对此有一个很好的理解。我读过框架对此有帮助,但我目前没有资源来设置框架,我想在尝试向我的团队推销之前对此有充分的了解。
这在很大程度上取决于您选择使用的框架,但一般的想法是实际的源目录不存储在 Web 根目录中。我在部署中使用 /web/projects
,然后将 public 文件夹符号链接到 htdocs
> cd /var/www/html
> ln -s /web/projects/myProject/public myproject
然后您通常会在 public 文件中有一个 index.php
文件来启动。通常还有一个 .htaccess
文件拦截所有请求并将它们指向该文件。
最好的选择是选择一个框架(Laravel 和 Symfony 是很好的选择)并遵循入门指南。
你在你的问题中说你没有资源来建立一个框架,但你必须有资源从头开始构建一个,甚至根本不知道你在做什么?
相信我,你不想自己做。至少,您应该首先尝试一些现有的框架,例如 symfony2 或 zf2 或任何您喜欢的框架。
当您熟悉其中一些并了解它们的工作原理后,您将能够创建自己的并在需要大量工作的情况下放弃。
无论如何,为了回答这个问题,zend framework 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
。
如您所见,none 的应用程序代码可直接从 Web 访问。所有传入的请求都通过所有魔法所在的 index.php。
如果您有兴趣了解真正的魔法是什么,所有 php Web 框架都是开源的,所以您可以自己检查一下:
我正在努力更好地理解 MVC 体系结构。我使用 LAMP 堆栈编写前端和后端 Web 应用程序。我还没有使用任何框架。我在 Notepad++ 中编写代码并使用 WinSCP 进行文件传输(终端用 Putty)。所有服务器端编码都在 PHP.
中完成根据我的阅读,这是我对 MVC 文件结构的最佳猜测:
+ -- Project1
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
+ -- Project2
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
因此,虽然有很多关于什么是模型、视图和控制器的文章和博客,但除了我在上面收集的内容之外,我还没有看到任何关于如何设置它们的信息。
我不知道它是如何与我服务器上的 public 文件夹集成的。这是我的猜测,假设 /var/www/html/
是我的 public 目录。
+ -- 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
根据我读到的内容(也许我错了),我假设人们将他们的整个项目 "behind" 放在他们的 public 文件夹中。我还假设您将最终的申请文件(my-application1.php
或 my-application-2.php
)放在您的 public 文件夹中供互联网上的人使用,并参考(php 的 include
/require
) 您的模型、视图和控制器来自该应用程序文件。我从来没有在我的 public 文件后面引用过文件,但我在这里假设了很多。
有人可以帮我验证一下吗?相对于我的 linux 服务器的其余部分应该如何设置?我假设有什么不正确的地方需要您更正吗?
我试图在选择任何框架(可能倾向于 Zend、Laravel 或 CakePHP)之前对此有一个很好的理解。我读过框架对此有帮助,但我目前没有资源来设置框架,我想在尝试向我的团队推销之前对此有充分的了解。
这在很大程度上取决于您选择使用的框架,但一般的想法是实际的源目录不存储在 Web 根目录中。我在部署中使用 /web/projects
,然后将 public 文件夹符号链接到 htdocs
> cd /var/www/html
> ln -s /web/projects/myProject/public myproject
然后您通常会在 public 文件中有一个 index.php
文件来启动。通常还有一个 .htaccess
文件拦截所有请求并将它们指向该文件。
最好的选择是选择一个框架(Laravel 和 Symfony 是很好的选择)并遵循入门指南。
你在你的问题中说你没有资源来建立一个框架,但你必须有资源从头开始构建一个,甚至根本不知道你在做什么?
相信我,你不想自己做。至少,您应该首先尝试一些现有的框架,例如 symfony2 或 zf2 或任何您喜欢的框架。
当您熟悉其中一些并了解它们的工作原理后,您将能够创建自己的并在需要大量工作的情况下放弃。
无论如何,为了回答这个问题,zend framework 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
。
如您所见,none 的应用程序代码可直接从 Web 访问。所有传入的请求都通过所有魔法所在的 index.php。
如果您有兴趣了解真正的魔法是什么,所有 php Web 框架都是开源的,所以您可以自己检查一下: