jarscr / teo
TEO 简单的 PHP 框架,用于使用 PHP 构建网络应用程序
Requires
- php: ~8.1
- delight-im/auth: ^8.3
- mpdf/mpdf: ^8.2
- symfony/translation: ^7.0
- symfony/twig-bridge: ^7.0
- twig/twig: ^3.8
Requires (Dev)
- phpunit/phpunit: ^9.6.15
- sentry/sdk: ^3.6.0
README
关于 TEO 简单 PHP 框架
TEO 是一个用于构建 Web 应用程序和网站的 PHP 框架。它是免费的开源软件。
本项目基于 MVC daveh/php-mvc
使用框架开始
- 首先,使用 composer create-project jarscr/teo app-ejemplo 安装项目。
- 执行 composer update 以安装依赖项。
- 配置 Web 服务器以将 public 目录作为根目录。
- 打开 App/Config.php 并输入数据库连接信息。
- 创建路由,添加控制器、视图和模型。
查看说明,了解如何使用此框架。
配置
配置设置存储在 App/Config.php 类中。默认设置包括数据库连接数据和显示或隐藏错误详情的设置。您可以在代码中这样访问设置:Config::DB_HOST
。您可以在其中添加自己的配置设置。
路由
路由将 URL 转换为控制器和动作。路由在 [控制器] (public/index.php) 中添加。包含一个示例路由,将路由到 主页控制器 中的 index
动作。
使用 add
方法添加路由。可以添加固定 URL 路由并指定控制器和动作,如下所示
$router->add('', ['controller' => 'Home', 'action' => 'index']); $router->add('posts/index', ['controller' => 'Posts', 'action' => 'index']);
或者可以添加 路由变量,如下所示
$router->add('{controller}/{action}');
除了 controller 和 action 之外,还可以在花括号中指定任何所需的参数,并可以为此参数指定一个自定义的正则表达式
$router->add('{controller}/{id:\d+}/{action}');
也可以指定控制器的命名空间
$router->add('admin/{controller}/{action}', ['namespace' => 'Admin']);
控制器
控制器响应用户的动作(点击链接、提交表单等)。控制器是扩展 [Core\Controller] (Core/Controller.php) 类的类。
控制器存储在 App/Controllers
目录中。包含一个示例 [主页控制器] (App/Controllers/Home.php)。控制器类必须位于 App/Controllers
命名空间中。您可以添加子目录以组织控制器,因此为这些控制器添加路由时,必须指定命名空间(请参阅前面的路由部分)。
控制器类包含方法是动作。要创建一个动作,将 **Action
** 后缀添加到方法名。示例控制器 [App/Controllers/Home.php] (App/Controllers/Home.php) 包含一个示例动作 "index"。
您可以通过 $ this->route_params
属性在动作中访问路由参数(例如,前面路由示例中显示的 **id** 参数)。
动作过滤器
控制器可以有 before 和 after 过滤方法。这些是在每次调用控制器动作方法之前和之后调用的方法。这对于认证很有用,例如,在允许用户执行操作之前确保用户已经登录。可选地,可以向控制器添加一个 before filter,如下所示:
/** * Before filter. Return false to stop the action from executing. * * @return void */ protected function before() { }
要阻止原始动作的执行,在过滤方法中返回 false
。添加 after filter 的方式如下:
/** * After filter. * * @return void */ protected function after() { }
视图
视图用于显示信息(通常是 HTML)。视图文件放在 App/Views
文件夹中。视图可以采用两种格式之一:PHP 标准格式,但足以显示数据。视图文件中不应访问数据库或类似内容。可以在控制器中将 PHP 视图表示为标准,可选地传递变量,如下所示:
View::render('Home/index.php', [ 'name' => 'Dave', 'colours' => ['red', 'green', 'blue'] ]);
第二种格式使用模板引擎 [Twig](《http://twig.sensiolabs.org/》)。使用 Twig 可以让您拥有更简单、更安全的模板,可以利用模板继承等功能(《http://twig.sensiolabs.org/doc/templates.html#template-inheritance》)。可以这样渲染一个 Twig 模板:
View::renderTemplate('Home/index.html', [ 'name' => 'Dave', 'colours' => ['red', 'green', 'blue'] ]);
在 App/Views/Home/index.html 中包含了一个 Twig 模板示例,它继承自 App/Views/base.html 基础模板。
模型
模型用于在应用程序中获取和存储数据。模型不知道这些数据如何在视图中展示。模型扩展了 Core\Model
类,并使用 [PDO](《https://php.ac.cn/manual/en/book.pdo.php》)来访问数据库。模型存储在 App/Models
文件夹中。在 App/Models/User.php 中包含了一个用户模型示例。您可以使用以下方式获取 PDO 数据库连接实例:
$db = static::getDB();
错误
如果将 SHOW_ERRORS
配置设置为 true
,则在发生错误或异常时,浏览器将显示所有错误详细信息。如果设置为 false
,则根据错误显示通用的消息,通过 App/Views/404.html 或 App/Views/500.html 视图。
在这个项目中,我们使用 Sentry.io 来监控错误。
Web 服务器配置
通过服务器重写规则启用友好的 URL。在 public
文件夹中包含了一个 [htaccess](public/.htaccess)文件。
等效的 nginx 配置在 [nginx-configuration.txt](nginx-configuration.txt)文件中。
许可证
Teo PHP MVC 是一个开源软件,根据 MIT 许可证 授权。