Chr*_*lij 0 php front-controller
我目前正在设置我的网站,主要是用PHP.虽然这是我第一次使用它,所以我遇到了一些问题.
我已经了解了该网站的基础知识.注册,登录,个人资料页等等.但是,我似乎必须对网站布局做出决定.
例如.目前,用户的个人资料页面的URL为
mysite.com/profile.php
理想情况下,我想要的是它的某些东西
mysite.com/user/ChrisSalij
从阅读这些内容我认为我需要一个Front Controller风格的网站,虽然我不确定这一点,也不知道从哪里开始实现一个.
请记住,我是一个非常新的PHP等,我会感谢任何有用的评论,链接和建设性的批评.
我非常愿意学习,所以链接到文章和解释会非常好.我经常对这样的事情进行大量的研究.但我是新手,我不知道从哪里开始.
编辑:我还应该补充一点,我计划将这个网站扩展到大规模.它很小,但如果我的目标成功,应该会有很多页面.因此,我愿意现在付出努力,使其长期正确.谢谢
那么,欢迎来到PHP的世界:)
首先,前端控制器通常只是称为MVC(模型 - 视图 - 控制器)的较大框架的一部分.简单地说,前端控制器可以作为所有人访问您站点时所访问的"索引"页面.它处理启动所需的站点事物,然后拉动和运行处理用户请求所需的资源(通常通过URL,如您给出的mysite.com/user/...).这是一个过于简单的解释.
虽然不一定是坚硬的东西去学习,我建议看着像一个教程这样,解释的整体思路和基本实现MVC模式的.他们将前端控制器称为"路由器"(这是另一回事,实现MVC或其变体的方法不止一种,不同部分的名称不止一个).我不认为难以理解或掌握这一点.大多数现代MVC框架都实现了面向对象的编程实践.有关PHP的一组好的视频截屏(包括一些基本的OOP技能),请看这里.
最后,如果这是你第一次使用PHP并希望实现像MVC这样的东西,你可能会看看像CakePHP或CodeIgniter这样的东西.伟大的框架,具有良好的文档,并为您做了很多艰苦的工作.祝好运
假设您使用的是apache,您可以在站点的根目录下创建名为.htaccess的文件,并添加这些行
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php?url=$0 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
这会将所有页面请求传递给index.php.在index.php中,您需要解析$_GET['url']并加载正确的页面include.你必须对输入进行消毒,并确保人们不包括他们不应该包含的任何内容.您可以通过以下方式获得以下内容:
list($controller, $username) = explode('/', $_GET['url']);
Run Code Online (Sandbox Code Playgroud)
典型的MVC结构将使用controller/action/id.如果省略"action",如在你的例子中,我将它默认为"view".与"查看"用户的个人资料一样.ID将是用户名.通常,每个控制器都是一个类,每个动作都是该类中的一个函数,之后的任何参数都被传递给该函数.每个操作都有一个关联的视图文件.
这里有很多代码可以为您提供一个完整的示例(我只是编写了一个MVC框架!)但是这应该为您提供入门的基础知识.
如果您需要更多详细信息和代码示例,请定义查看其他一些框架,如CakePHP,Kohana/CodeIgniter.