在这种结构中构建简单PHP网站的最佳实践是什么?
我正在以这种结构构建一个支持PHP的网站:在这种结构中构建简单PHP网站的最佳实践是什么?,php,templates,Php,Templates,我正在以这种结构构建一个支持PHP的网站: /public /js /css /img /index.php .htaccess /site /inc _header.php _footer.php . . /func _base.php .htaccess . . 所以一个公共目录和源(站点)目录,所有调用都被路由到index.php,这就是它的结构,但我是一个新手,在开始时遇到了麻烦。所有页面将作为$\u GET请
/public
/js
/css
/img
/index.php
.htaccess
/site
/inc
_header.php
_footer.php
.
.
/func
_base.php
.htaccess
.
.
所以一个公共目录和源(站点)目录,所有调用都被路由到index.php,这就是它的结构,但我是一个新手,在开始时遇到了麻烦。所有页面将作为$\u GET
请求传递到索引,并将包括适当的布局/文件。但是如果像index.php?products=prod&page=info
对于模板,我将使用普通/普通PHP,如下所示:
product-name.php:
$product = array(...);
include_once INC_DIR."products.tpl.php"
这是一个学习项目,但我打算用这种方法制作一个个人网站
抱歉,如果这是一个模糊的问题,我是新来的PHP,英语不是我的母语
干杯 这可能太宽泛了,因为没有明确的答案-但是你在认真征求意见,所以我将把这作为一个社区维基答案,任何人都可以改进(或者在他们认为合适的时候取消)
我认为你有了一个良好的开端,但有几件事需要考虑: 将http文件与应用程序文件分开是个好主意,但我以后会将其进一步分开,而不是:
/public
将其分为:
/http
/https
为您提供两个文档根,一个用于http文档,另一个用于https。这样,将来如果需要添加SSL证书,可以将安全部分与非安全部分完全分开。这意味着,如果您在/https
下放置一个“联系我们”表单(例如),它永远无法通过http访问-根本无法工作(它在该docroot下不存在)
如果您添加一个CMS,该CMS也可以有自己的文档根,以便您可以完全锁定它(例如,通过IP地址限制访问),并且还应该有一个SSL证书
您的
/site
目录的结构完全取决于您自己,但它可能值得一看。本质上,这是一种分离关注点的方法,模型、视图和控制器。一个非常简单的解释是:
模型是你的东西-它实际上是一个完整的层,包含你的类以及它们如何与数据库通信。您可能有一个保存产品结构的Product
类,以及一个关联的产品/数据库类,该类在数据库中执行该产品的获取和更新
视图是您的模板-基本上是您在屏幕上显示内容的方式
控制器是将所有东西粘在一起的粘合剂-因此产品类别控制器将知道使用类别id(从$\u GET
)获取类别
模型,该id将通过数据库中的类别介绍和所有相关产品进行传播(这将从数据库中传播)。然后控制器将附加类别视图以生成您在屏幕上看到的内容
考虑到这一点,您的/site
文件夹可能更像:
/site
App.php // core application class (eq base.php)
/model
/category
Category.php
/db
Category.db.php
/product
Product.php
/db
Product.db.php
/user
User.php
/db
User.db.php
/controller
IndexController.php // for the homepage perhaps
CategoryController.php // for a product category
ProductController.php // for a product
/view
Index.phtml
Category.phtml
Product.phtml
/sub
header.phtml
footer.phtml
index.php 索引文件现在简单地变成了一种路由器——您将变量传递给它,它将获取执行所需操作的相关控制器 从本质上讲,它将是一个非常稀疏的文件,它可以简单到:
require_once realpath("path/to/App.php");
$app = App::start(); // using a Singleton Pattern
$app->fetch($_GET)->content();
单件模式:
大多数MVC系统使用类似Apache的mod_rewrite
to。这允许您使用like-您的控制器然后获取与/toys/恐龙相关的数据;例如,可以使用数据库中的url
表将其映射到类别
这基本上就是大多数PHP框架的工作方式,但您可能会有兴趣在本项目中寻找一些灵感、教育或使用:
- 法尔康
…哦,还有很多其他的…不幸的是,我担心这可能不适合堆栈溢出(太宽)…这是一个遗憾,因为我非常喜欢这个问题。@cd001我只是想征求关于如何处理它的建议和技巧,而不是完整的源代码。