brain / brain
WordPress 的 Pimple 包装器
Requires
- php: >=5.4
- pimple/pimple: ~3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2023-02-26 11:02:48 UTC
README
Brain 是 WordPress 的简单 Pimple 包装器。
它是 Brain 项目 的基础包。
要在容器中注册参数和服务,您应该创建一个 模块,即实现 Brain\Module
接口的一个类。
此接口由 3 个方法组成
getBindings
接收当前容器作为参数,用于注册服务和参数boot
用于启动模块,即运行一次就应该执行的操作。方法接收当前容器作为参数,因此可以在启动时执行一些操作。getPath
应返回模块文件夹的绝对路径
要注册模块,应使用容器的 addModule
方法,但 仅使用 'brain_init'
钩子。
当所有模块都已加载时,将触发 'brain_loaded'
钩子。
##使用示例##
###首先定义一个服务###
class FooService {
function foo( $foo = '' ) {
echo '<p>Foo is ' . $foo . '</p>';
}
}
###然后定义一个 Brain 模块###
class FooModule implements Brain\Module {
function getBindings( Brain\Container $brain ) {
$brain['foo'] = 'bar';
$brain['foo_service'] = function() { return new FooService; };
}
function boot( Brain\Container $brain ) {
add_action( 'loop_start', function() use( $brain ) {
$brain['foo_service']->foo( $brain['foo'] );
});
}
function getPath() {
return dirname( __FILE__ );
}
}
###最后将模块添加到 Brain###
add_action( 'brain_init', function( $brain ) {
$brain->addModule( new FooModule );
});
有关更多信息,请参阅 Pimple 文档。
###从 Brain 获取数据###
要获取注册的服务,可以使用 Brain::instance()
静态方法和 Pimple 的数组访问方法,例如
$brain = Brain::instance();
$foo_service = $brain['foo_service'];
或者可以使用 Brain 的 get
方法,在将其与 instance
方法链式调用时,就像这样
$foo_service = Brain::instance()->get('foo_service');
##安装##
应通过 Composer 安装此包。Brain 通过 packagist 提供,因此您只需在您的 composer.json
中添加 require 设置。例如
"require": {
"php": ">=5.4",
"brain/brain": "dev-master"
}
无需显式要求 Pimple,因为 Brain 会为您要求。之后只需
$ composer install
您就完成了。有关更多信息,请参阅 Composer 文档。
###关于 PHP 版本的问题###
Pimple 支持 PHP 5.3+,然而我不想再支持那个版本了,因此即使(可能)Brain 的当前版本与 PHP 5.3 兼容,也可能在未来某个版本中不兼容,我永远不会对其进行测试。
##相关的 WordPress 钩子##
Brain 本身及其模块在 'after_setup_theme'
上初始化,优先级为 0,这是一个合理的早期钩子,可以在插件和主题中使用。与 Brain 相关的钩子有
'brain_init'
用于注册模块(见上文)'brain_loaded'
当所有模块都已加载时触发- 使用优先级 >= 1 的
'after_setup_theme'
(或任何后续钩子)从容器获取数据