我正在努力更好地理解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.php
或my-application-2.php
),放在公共文件夹中供互联网上的人使用,并参考(php的include
/ { {1}})该应用程序文件中的模型,视图和控制器。我从未在我的公共文件后面引用文件,但我在这里假设很多。
有人可以为我验证这些吗?这应该如何设置与我的Linux服务器的其余部分相关?我有什么假设是不正确的,你需要纠正吗?
在我选择任何框架(可能倾向于Zend,Laravel或CakePHP)之前,我试图对此有一个很好的理解。我已经读到框架有助于此,但我目前没有资源来设置框架,我想在尝试向我的团队宣传之前全面了解这一点。
答案 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框架都是开源的,所以请随意查看: