x4k-maker / php-mvc
Requires
- twig/twig: ~3.0
- x4k-maker/php-mvc: dev-master
This package is auto-updated.
Last update: 2024-09-09 04:47:21 UTC
README
这是一个简单的MVC框架,用于使用PHP构建Web应用程序。它是免费的且开源的。
该框架是为Write PHP like a pro: build an MVC framework from scratch课程而创建的。该课程解释了如何从头开始逐步构建框架。如果您已经参加了该课程,那么您已经知道如何使用它。如果没有,请按照以下说明操作。
使用此框架开始应用程序
- 首先,直接下载框架或通过克隆仓库来下载框架。
- 运行 composer update 以安装项目依赖项。
- 配置您的Web服务器,使 public 文件夹作为Web根目录。
- 打开 App/Config.php 并输入您的数据库配置数据。
- 创建路由、添加控制器、视图和模型。
下面有更多详细信息。
配置
配置设置存储在App/Config.php类中。默认设置包括数据库连接数据和显示或隐藏错误详情的设置。您可以在代码中这样访问设置:Config::DB_HOST
。您可以在其中添加自己的配置设置。
路由
Router将URL转换为控制器和动作。路由在前端控制器中添加。包含一个示例主页路由,该路由指向Home控制器中的index
动作。
使用add
方法添加路由。您可以添加固定URL路由,并指定控制器和动作,如下所示
$router->add('', ['controller' => 'Home', 'action' => 'index']); $router->add('posts/index', ['controller' => 'Posts', 'action' => 'index']);
或者您可以添加路由变量variables
,如下所示
$router->add('{controller}/{action}');
除了controller
和action
之外,您还可以在花括号内指定任何参数,也可以为该参数指定一个自定义的正则表达式
$router->add('{controller}/{id:\d+}/{action}');
您还可以为控制器指定一个命名空间
$router->add('admin/{controller}/{action}', ['namespace' => 'Admin']);
控制器
控制器响应用户动作(点击链接、提交表单等)。控制器是扩展Core\Controller类的类。
控制器存储在App/Controllers
文件夹中。包含一个示例Home控制器。控制器类需要位于App/Controllers
命名空间中。您可以为控制器添加子目录以进行组织,在添加这些控制器的路由时,需要指定命名空间(请参阅上面的路由部分)。
控制器类包含动作方法。要创建动作,请将Action
后缀添加到方法名称。在App/Controllers/Home.php中的示例控制器具有一个示例index
动作。
您可以通过$this->route_params
属性在动作中访问路由参数(例如,在上述路由示例中显示的id
参数)。
动作过滤器
控制器可以有 前置 和 后置 过滤方法。这些方法是在控制器中调用每个动作方法之前和之后被调用的。例如,用于身份验证很有用,确保用户登录后才能执行动作。可以可选地向控制器添加一个 前置过滤 方法,如下所示
/** * Before filter. Return false to stop the action from executing. * * @return void */ protected function before() { }
要停止最初调用的动作执行,从前置过滤方法返回 false
。添加 后置过滤 方法如下
/** * After filter. * * @return void */ protected function after() { }
视图
视图用于显示信息(通常是HTML)。视图文件放在 App/Views
文件夹中。视图可以是两种格式之一:标准的PHP,但只包含足够多的PHP来显示数据。视图文件中不应发生数据库访问或类似操作。您可以在控制器中渲染标准PHP视图,可选地传递变量,如下所示
View::render('Home/index.php', [ 'name' => 'Dave', 'colours' => ['red', 'green', 'blue'] ]);
第二种格式使用 Twig 模板引擎。使用Twig可以让您拥有更简单、更安全的模板,可以利用模板继承等功能。您可以这样渲染Twig模板
View::renderTemplate('Home/index.html', [ 'name' => 'Dave', 'colours' => ['red', 'green', 'blue'] ]);
一个示例Twig模板包含在 App/Views/Home/index.html 中,它继承自 App/Views/base.html 中的基本模板。
模型
模型用于在应用程序中获取和存储数据。它们不知道这些数据如何在视图中呈现。模型扩展 Core\Model
类,并使用 PDO 访问数据库。它们存储在 App/Models
文件夹中。一个示例用户模型类包含在 App/Models/User.php 中。您可以这样获取PDO数据库连接实例
$db = static::getDB();
错误
如果将 SHOW_ERRORS
配置设置为 true
,当发生错误或异常时,将在浏览器中显示完整的错误详情。如果设置为 false
,则将使用 App/Views/404.html 或 App/Views/500.html 视图显示通用的消息,具体取决于错误。
Web服务器配置
通过使用Web服务器重写规则启用美观的URL。在 public
文件夹中包含了一个 .htaccess 文件。等效的nginx配置在 nginx-configuration.txt 文件中。
在此 处 注册课程,了解如何从头开始构建此框架,一步一步地将其全部组合起来。