x4k-maker/php-mvc

该软件包最新版本(dev-patch-1)没有提供许可证信息。

dev-patch-1 2021-11-08 22:52 UTC

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课程而创建的。该课程解释了如何从头开始逐步构建框架。如果您已经参加了该课程,那么您已经知道如何使用它。如果没有,请按照以下说明操作。

使用此框架开始应用程序

  1. 首先,直接下载框架或通过克隆仓库来下载框架。
  2. 运行 composer update 以安装项目依赖项。
  3. 配置您的Web服务器,使 public 文件夹作为Web根目录。
  4. 打开 App/Config.php 并输入您的数据库配置数据。
  5. 创建路由、添加控制器、视图和模型。

下面有更多详细信息。

配置

配置设置存储在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}');

除了controlleraction之外,您还可以在花括号内指定任何参数,也可以为该参数指定一个自定义的正则表达式

$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.htmlApp/Views/500.html 视图显示通用的消息,具体取决于错误。

Web服务器配置

通过使用Web服务器重写规则启用美观的URL。在 public 文件夹中包含了一个 .htaccess 文件。等效的nginx配置在 nginx-configuration.txt 文件中。

在此 注册课程,了解如何从头开始构建此框架,一步一步地将其全部组合起来。