a3gz / chubby
Slim 3 应用模板
This package is auto-updated.
Last update: 2024-09-12 22:05:57 UTC
README
为Slim 框架添加一些重量。
Chubby 通过以下两种方式在 Slim 应用模板周围添加额外的重量:(1) 在 fat
目录下的有用类和(2) 作为模块。
这些模块中的第一个是 Chubby View,这是一个提议以非常方便的方式组织代码的渲染器。
通过 Composer 安装
转到您希望新应用程序所在的位置的目录,然后创建项目
composer create-project a3gz/chubby -s dev
这将创建一个名为 chubby
的新项目。
一旦创建项目,您可以安全地删除 chubby/composer.json
文件和 chubby/vendor
目录。不过,请不要删除文件 chubby/private/composer.json
,因为您将在其中添加依赖项。
Chubby 需要将所有必需的依赖项放在 private
目录下
> cd chubby/private
> composer install
最后,转到您的浏览器并请求
.../chubby/hello/world
您可能不希望您的应用程序被称为 chubby
,因此您可能希望将此目录重命名。
您也可以在创建项目时这样做
composer create-project a3gz/chubby my-app -s dev
现在您的应用程序在 ./my-app
。
使用 Docker Compose 运行
docker-compose up [-d]
提供的 docker-compose.yml
将主机 9999 端口映射,因此您应该能够在以下本地地址中看到站点
https://:9999
控制台请求
php console.php path/to/resource
为什么选择 Chubby?
Chubby 是一个工作中的应用程序模板,提供了一种组织 Slim 应用程序的可能方式。
围绕这个想法,Chubby 为将应用程序文件分割成可以在 public_html
目录之外放置的方式等奠定了基础。
配置
Chubby 假设存在一个包含两个目录的 private/app/config
目录:config/container
和 config/settings
。在 config/container
下必须存在至少一个名为 main.php
的文件。此文件应返回一个关联数组,其中包含将注入容器的设置。
可选地,我们可以通过在 config/container
目录内添加更多文件来注入额外的依赖项。每个文件必须返回一个依赖项。以提供的 logger.php
为例
return function ($c) {
$time = time();
$year = date('Y', $time);
$month = date('m', $time);
$day = date('d', $time);
$hour = date('H', $time);
$baseDir = \Fat\Helpers\Path::makePrivatePath('/logs'
. '/' . $year
. '/' . $month
. '/' . $day
);
if (!is_dir($baseDir)) {
mkdir($baseDir, 0777, true);
}
$fileName = "{$year}m{$month}d{$day}h{$hour}.log";
$logFileName = "{$baseDir}/{$fileName}";
$logger = new \Monolog\Logger($appName);
$file_handler = new \Monolog\Handler\StreamHandler($logFileName);
$logger->pushHandler($file_handler);
return $logger;
};
Chubby 将在容器中以与文件相同的名称注入依赖项,在本例中为:logger
:$container['logger']
。
Slim 4
Chubby 版本 ^3
依赖于 Slim 4.3.0
以将 PHP 要求降低到 PHP 7.1
。如果可用更高版本的 PHP,则将 Slim 依赖项版本更改为 ^4
应该可以工作,因为我们仍然处于同一主要版本...但我还没有尝试过。
此版本比 Chubby ^1
更有意见,因为一些由 Slim 处理的事情现在在我们控制之下。新目录 src/fat
包含有助于
- 初始化
App
的类。 - 添加错误处理程序。
- 以简单编辑
config.php
的方式解决HttpNotFoundException
。 - 将 Slim3 的
Environment::mock()
返回,以便通过模拟 HTTP 请求使控制台请求成为可能。
挂钩
版本 3 支持钩子和插件。插件应位于 private/app/plugins
目录下。每个插件必须有一个与插件目录同名的文件。此文件必须包含一个包含至少一个条目的标题部分:type
,其值必须为 Plugin
,以便插件加载器能够识别它。查看示例插件以了解其工作原理。
内置钩子
主题
版本 3 支持主题。主题可以在两个级别上进行自定义:样式 和 视图。我们可以创建不同的样式表来更改网站主题并使用默认视图。更进一步的做法是为每个主题创建自定义视图。
在大多数情况下,创建样式表就足够了,但如果我们还想要更改视图的布局,那么我们需要为每个主题创建特定的视图。请注意,我们只需要为想要覆盖的视图创建特定主题的视图。如果我们没有覆盖视图,则将自动使用默认视图。
查看示例以了解其工作原理。
联系作者
我期待收到评论、建议和头脑风暴般的想法。