a3gz/chubby

Slim 3 应用模板

维护者

详细信息

github.com/a3gz/chubby

源代码

问题

安装: 99

依赖项: 0

建议者: 0

安全性: 0

星星: 1

关注者: 1

分支: 0

公开问题: 0

类型:项目

3.0.0 2022-04-12 16:35 UTC

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/containerconfig/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 支持主题。主题可以在两个级别上进行自定义:样式视图。我们可以创建不同的样式表来更改网站主题并使用默认视图。更进一步的做法是为每个主题创建自定义视图。

在大多数情况下,创建样式表就足够了,但如果我们还想要更改视图的布局,那么我们需要为每个主题创建特定的视图。请注意,我们只需要为想要覆盖的视图创建特定主题的视图。如果我们没有覆盖视图,则将自动使用默认视图。

查看示例以了解其工作原理。

联系作者

我期待收到评论、建议和头脑风暴般的想法。

alejandro@roetal.com