Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
写一个基本的PHP MVC,不知道如何开始_Php_Mysql_Mod Rewrite_Permalinks - Fatal编程技术网

写一个基本的PHP MVC,不知道如何开始

写一个基本的PHP MVC,不知道如何开始,php,mysql,mod-rewrite,permalinks,Php,Mysql,Mod Rewrite,Permalinks,我正在从事一个基于PHP和MySQL的个人项目,我正在做一些研究和重写。假设我有一个网站 http://www.myDomain.com/ 我希望在域的根目录中有一个index.php或bootstrap。所以如果你访问 http://www.myDomain.com/admin/ 它仍将从域顶层的index.php加载,该域处理配置文件的解析和加载,并将用户重定向到正确的位置,同时创建漂亮的链接 我应该从哪里开始我在这方面的研究和教育?我有点不知所措。感谢您抽出时间:) 更新: 听起来我

我正在从事一个基于PHP和MySQL的个人项目,我正在做一些研究和重写。假设我有一个网站

http://www.myDomain.com/
我希望在域的根目录中有一个index.php或bootstrap。所以如果你访问

http://www.myDomain.com/admin/
它仍将从域顶层的index.php加载,该域处理配置文件的解析和加载,并将用户重定向到正确的位置,同时创建漂亮的链接

我应该从哪里开始我在这方面的研究和教育?我有点不知所措。感谢您抽出时间:)


更新:


听起来我真的想转向一个带有前端控制器的MVC系统。任何关于编写我自己的MVC框架的好参考资料(都是非常基础的)。老实说,我现在不想使用Zend框架(这会使它变得更大!)

您需要考虑配置
.htaccess
以在内部将所有请求重写到引导文件,该文件可能是index.php

科哈纳用这个来做

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

然后,您可以访问
$\u服务器['REQUEST\u URI']
开始将请求路由到控制器。

基本上,您可以将任何传入请求重写到
index.php
。以下是框架中的一个示例
.htaccess

# Turn on URL rewriting
RewriteEngine On

# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]
因此,您的示例将被路由到
index.php/admin
。然后,您可以查看
$\u服务器['REQUEST\u URI']
以确定下一步要做什么

一种比较常见的模式是使用
URI
的第一段作为控制器,第二段作为方法。例如:

$segments = explode($_SERVER['request_uri'], '/');//array('admin')

if(isset($segments[0]))
{
    $class = $segments[0].'_controller';//'admin_controller

    if(isset($segments[1]))
         $method = $segments[1];
    else
         $method = 'index';
}
else
{
    $class = 'index_controller';
    $method = 'index';
}

$controller = new $class;
$controller->$method();
这段代码绝不是生产就绪的,因为如果用户访问了一个不存在的控制器的URL,它就会死于非命。它也不能处理参数之类的好事情。但这是PHP MVC框架如何运行背后的想法


顺便说一下,你称之为引导的另一个名字是。你可以用谷歌搜索这个词来找到更多关于这个模式的信息。

这都是从零开始的,所以我可以做任何我需要做的事情。基本上,我希望避免显示.php文件,并且具有漂亮的结构。或者像domain.com/posts/{ID NUM}/Damn这样的东西,我知道我在寻找一个更好的名字!我刚刚开始从事Zend框架的一个项目,因此我熟悉MVC设计。我知道Kohana 2.3默认遵循
controller/method/argument1/argument2
,但我认为它太死板了,即使使用
routes.php
config文件。看看Kohana 3-它的路线非常灵活,而且很容易锁定(因为参数匹配
\d+
)etcalex:我同意,我期待着在我的下一个项目中使用KO3。这只是一个简单的例子。