大脑 / 杏仁核
简化WordPress中的请求嗅探和数据获取。
Requires
- php: >=5.4
- brain/brain: ~0.1.0
- brain/support: ~0.1.0
Requires (Dev)
- mockery/mockery: 0.9.3
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2023-02-26 11:02:52 UTC
README
Amygdala是一个包装请求信息(并非完整插件)的包,简化了数据获取,无需处理全局变量。
它使用composer嵌入到更大的项目中。
它是Brain项目模块的一部分。
###API###
Amygdala包提供了一个API,简化了其使用,无需获取、实例化或挖掘包对象。API定义在一个类中,存储在Brain(Pimple)容器中,ID为:"amygdala"
。因此,可以通过Brain实例获取它,如下所示:$api = Brain\Container::instance()->get("amygdala")
,然后调用以这种方式获取的实例上的所有API函数。然而,这样做并不太容易使用,尤其是对于那些习惯于仅使用普通函数添加和触发钩子的人来说。这就是为什么该包还提供了一个外观类的原因。这个术语并不是指外观模式,而是指Laravel外观,该方法(不是实际代码)来源于此:类中没有真正的静态方法,只有一个__callstatic
方法,该方法将API方法代理到适当的实例化对象。
外观类在Brain命名空间中名为Request
。以下是一个简单示例,使用'example.com'
作为默认值从$_GET
中获取一个变量,并对其进行url编码
Brain\Request::query( 'adomain', 'example.com', FILTER_SANITIZE_URL );
###嵌入到OOP项目中###
静态外观类易于使用,然而,在其它类中使用它会导致硬编码对Amygdala的依赖。此外,对其他类进行独立单元测试几乎成为不可能。为了解决这些问题,最简单的方法是使用依赖注入的组合。实际上,Brain\Request
外观类可以动态使用,如下所示
$request = new Brain\Request;
$request->query( 'adomain', 'example.com', FILTER_SANITIZE_URL );
这两种方法没有绝对的区别,但是使用后者可以在其他类中注入类的实例。以下是一个示例
class A_Plugin_Class {
function __construct( \Brain\Request $request ) {
$this->request = $request;
}
function get_a_POST_value( $a_key, $default = '', $filter = FILTER_UNSAFE_RAW ) {
return $this->request->post( $a_key, $default, $filter );
}
}
get_a_POST_value
方法使用$this->request
属性来调用Amygdala API方法。独立测试该方法非常简单,以下是一个使用PHPUnit和Mockery的示例
class A_Plugin_Class_Test () {
function test_get_a_POST_value() {
$request = \Mockery::mock('\Brain\Request');
$request->shouldReceive( 'post' )->once()->with( 'foo', 'bar' )->andReturn( 'A value!' );
$class = new A_Plugin_Class( $request );
$this->assertEquals( 'A value!', $class->get_a_POST_value( 'foo', 'bar' ) );
}
}
因此,该方法在隔离的情况下进行测试,模拟一个$_POST请求:简单直接。
###注意事项!###
Amygdala是一个Brain模块。如您在Brain的readme文件中所读,它会在after_setup_theme
上以优先级0启动自己及其模块,这意味着您不能在after_setup_theme
被触发之前使用Amygdala。
###需求###
- PHP 5.4+
- Composer(用于安装)
- WordPress 3.9(它可能适用于更早的版本,但没有经过测试,版本<3.9将不会受到支持)。
###安装###
您需要Composer来安装此包。它托管在Packagist上,因此您只需要在您的composer.json
文件中的require
对象中插入"brain/amygdala": "dev-master"
即可。
{
"require": {
"php": ">=5.4",
"brain/amygdala": "dev-master"
}
}
请参阅Composer 文档了解如何安装Composer自身以及包。
###代号:Amygdala###
研究表明,Amygdala是大脑的一部分,在决策处理中起着主要作用。
Amygdala包之所以被称为Amygdala,是因为它是Brain模块,而HTTP请求是WordPress(实际上大多数网络应用程序)进行决策以决定做什么的因素。
###开发者与贡献者###
该包对贡献者和拉取请求开放。它附带了一组针对PHPUnit套件的单元测试。请在提交PR之前确保所有测试通过。要运行测试,请以独立模式安装包(即'vendor'文件夹位于包文件夹内)。在dev模式下安装时,Striatum也会安装Mockery,这是一个强大的模拟测试工具。
###许可证###
Amygdala的代码许可协议为GPLv2+。通过Composer安装的代码受以下许可证保护: