boneframework / skeleton
Bone 框架
Requires
- php: ^8.2
- ext-fileinfo: *
- ext-intl: *
- ext-json: *
- ext-pdo: *
- boneframework/bone: ^3.11
- delboy1978uk/cdn: ^2.0
- delboy1978uk/image: ^2.1
Requires (Dev)
- delboy1978uk/dev-tools: ^1.0
- roave/security-advisories: dev-latest
- dev-master
- v3.11.0
- v3.10.4
- v3.10.3
- v3.10.2
- v3.10.1
- v3.10.0
- v3.9.2
- v3.9.1
- v3.9.0
- v3.8.11
- v3.8.10
- v3.8.9
- v3.8.8
- v3.8.7
- v3.8.6
- v3.8.5
- v3.8.4
- v3.8.3
- v3.8.2
- v3.8.1
- v3.8.0
- v3.7.9
- v3.7.8
- v3.7.7
- v3.7.6
- v3.7.5
- v3.7.3
- v3.7.2
- v3.7.1
- v3.7.0
- v3.6.5
- v3.6.4
- v3.6.3
- v3.6.2
- v3.6.1
- v3.6.0
- v3.5.1
- v3.5.0
- v3.4.11
- v3.4.10
- v3.4.9
- v3.4.8
- v3.4.7
- v3.4.6
- v3.4.5
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.9
- v3.3.8
- v3.3.7
- v3.3.6
- v3.3.5
- v3.3.4
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.9
- v3.2.8
- v3.2.7
- v3.2.6
- v3.2.5
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.5.8
- v2.5.7
- v2.5.6
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.0
- v2.1.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-07 12:52:11 UTC
README
你想要一个带有当地海盗俚语的PHP框架吗?
它是七海中最可怕的框架!
http://github.com/boneframework
功能
- PSR-7 HTTP 消息
- PSR-11 依赖注入容器配置
- PSR-15 中间件路由
- i18n 翻译器
- 自包含的包基于架构
- 内置可选的Docker开发环境
- 可扩展的命令行界面
安装
通过 composer
我们推荐使用我们的Docker环境,但是你也可以使用自己的设置,通过composer安装
composer create-project boneframework/skeleton your/path/here
cp your/path/here/.env.example your/path/here/.env
通过 docker
Docker开发环境让你免于所有常见的devops杂事。克隆 boneframework/lamp
,然后替换代码文件夹 boneframework/skeleton
,然后启动它。
git clone https://github.com/boneframework/lamp myproject
cd myproject
rm -fr code // remove lamp stack default placeholder page
git clone https://github.com/boneframework/skeleton code
cp code/.env.example code .env
bin/setdomain yourdomain.com // optional, default dev domain is boneframework.docker
将 127.0.0.1 boneframework.docker
添加到你的 /etc/hosts
(或你的自定义域名)。要启动docker服务器环境
bin/start
然后浏览到 https://boneframework.docker
,你将看到网站正在运行。
开发同时也在 http://boneframework.docker:8025
上运行Mailhog,因此你可以配置任何开发电子邮件使用SMTP端口 1025
,所有发出的邮件都将出现在Mailhog的出站邮箱中。
MariaDB正在运行,在主机 mariadb
上(参见 docker-compose.yml
),以及在 config/bone-db.php
中。
为了“SSH”到你的服务器以运行PHP命令(如composer等),请在新的终端窗口中键入以下内容。
bin/terminal php // for the PHP container
bin/terminal mariadb // for the DB container
要关闭你的服务器,按CTRL-C退出,然后键入 bin/stop
。
Bone框架的快速介绍
骨架项目文件
你的项目中有一些文件夹和文件,这里有一个简要说明
- config(应用程序配置)
- data(你的项目将使用的文件(翻译,缓存,上传等))
- public(通常的index.php端点和前端资源如css、图像和js)
- src(你的应用程序包在这里)
- tests(因为知道你的代码是否工作良好总是很好的)
- vendor(第三方composer库,不要编辑,不要提交!)
Bone框架应用程序周期
在启动Bone框架(《public/index.php》)时,应用程序执行几个操作
- 开始一个会话
- 从config文件夹加载配置(可以使用不同的文件夹用于不同的环境,或环境变量)
- 注册Bone框架核心包
- 将
config/packages.php
中的包注册到DI容器中 - 添加在
config/middleware.php
中配置的任何全局中间件 - 分发一个请求,返回一个响应
配置
你可以在 config/
文件夹中放入任意数量的 .php
文件。确保它们返回一个配置数组。您可以根据环境变量 APPLICATION_ENV
覆盖配置,例如,如果环境是生产,它将加载生产子目录中的附加配置。
包括几个配置文件,其中一些是为可选的Bone包,可能需要删除
bone-db.php
bone-firewall.php
bone-i18n.php
bone-log.php
layouts.php
middleware.php
packages.php
paginator.php
paths.php
site.php
views.php
在你的配置文件中,你可以添加任何你想要的内容。
包类
包是Bone框架应用程序中的一个关键组件。你将在 config/packages.php
中看到当前在框架上运行的包。请注意,顺序很重要,因为包可能需要从另一个包中定义的依赖。查看 src/App/AppPackage.php
内部。
<?php namespace Bone\App; use Bone\App\Controller\IndexController; use Bone\Controller\Init; use Bone\Router\Router; use Bone\Router\RouterConfigInterface; use Barnacle\RegistrationInterface; use Barnacle\Container; class AppPackage implements RegistrationInterface, RouterConfigInterface { /** * @param Container $c */ public function addToContainer(Container $c) { $c[IndexController::class] = $c->factory(function (Container $c) { $controller = new IndexController(); return Init::controller($controller, $c); }); } /** * @param Container $c * @param Router $router * @return Router */ public function addRoutes(Container $c, Router $router): Router { $router->map('GET', '/', [IndexController::class, 'indexAction']); $router->map('GET', '/learn', [IndexController::class, 'learnAction']); return $router; } }
你将看到两个方法,它们是 RegistrationInterface
和 RouterConfigInterface
的实现。查看 league/route
文档以了解路由的用法。在 addToContainer()
方法中,你可以创建你的控制器和其他依赖项的工厂。
控制器
在上面的 App 包中,您会注意到控制器工厂返回了 Controller::init($controller, $c)
。这是一个方便的初始化类,它将为您的类设置一些东西。为了让事情变得简单,以下是每个组件需要做的所有事情
- 视图引擎(实现
Bone\View\ViewAwareInterface
并使用Bone\View\Traits\HasViewTrait
) - 翻译器(实现
Bone\I18n\I18nAwareInterface
并使用Bone\I18n\Traits\HasTranslatorTrait
) - 站点配置(实现
Bone\Server\SiteConfigAwareInterface
并使用Bone\Server\Traits\HasSiteConfigTrait
) - 会话(实现
Bone\Server\SessionAwareInterface
并使用Bone\Server\HasSessionTrait
) - 日志记录器(实现
Bone\Log\LoggerAwareInterface
并使用Bone\Log\HasLoggerTrait
)
您还可以选择扩展 Bone\Controller\Controller
,这将立即为您提供视图、翻译器和站点配置。
控制器操作方法
您可以在包类中看到配置的路由,以及要调用的控制器类和方法。每个操作方法本质上是一个 PSR-15 服务器请求处理器接口 https://www.php-fig.org/psr/psr-15/
。参见 src/App/Controller/IndexController.php
以获取基本示例。
数据库
在主配置 config/bone-db.php 中设置您的默认数据库凭据,并在子目录中设置任何特定环境的配置
'db' => [ 'host' => '127.0.0.1', 'database' => 'bone', 'user' => 'leChuck', 'pass' => 'bigWh00p', ],
在您的包类中,您可以使用 $c->get(PDO::class)
从容器中获取连接。
国际化(i18n)
Bone 支持翻译到不同的区域设置。翻译文件(gettext .po
和 .mo
)应放置在 data/translations
下的区域设置子目录中,例如 data/translations/en_GB/en_GB.po
。您可以设置默认区域设置和支持的区域设置数组。
<?php use Laminas\I18n\Translator\Loader\Gettext; return [ 'i18n' => [ 'translations_dir' => 'data/translations', 'type' => Gettext::class, 'default_locale' => 'en_PI', 'supported_locales' => ['en_PI', 'en_GB', 'nl_BE', 'fr_BE'], ], ];
要使用翻译器,您可以简单调用:
<?php // from a controller: $this->getTranslator()->translate('placeholder.string'); // to set locale $this->getTranslator()->setLocale($locale); // from a view file: $this->t('placeholder');
您还可以将支持的区域设置设置为任何 URL,它将被从请求中删除,并设置区域设置。例如,如果您有一个端点 /morte/info
,您可以将其设置为 /nl_BE/more/info
或其他,您的路由仍然可以解析,但现在区域设置将是您设置的。您可以在视图文件中调用 $this->l()
,以生成这个 url 的第一部分。
日志记录
Bone 使用 monolog/monolog,日志记录文件位于 data/logs。目前我们只支持写入文件,但您可以添加任意多的通道。
<?php return [ 'log' => [ 'channels' => [ 'default' => 'data/logs/default_log', ], ], ];
在控制器中使用日志记录器
$this->getLogger()->debug($message) // or error(), etc, see PSR-3
推荐包
Bone 框架已经有很多扩展框架的包。试试这些!
delboy1978uk/bone-form
- 生成表单,处理错误,国际化兼容delboy1978uk/bone-doctrine
- Doctrine 实体管理器delboy1978uk/bone-mail
- Bone 框架的邮件功能delboy1978uk/bone-user
- 完整的用户注册系统,包括激活邮件等delboy1978uk/generator
- 快速生成新的包模板delboy1978uk/bone-oauth2
- OAuth2 授权和资源服务器delboy1978uk/bone-open-api
- Open API Swagger 文档delboy1978uk/image
- 基于 gd 的简单图像类