大脑/杏仁核

该包已被废弃,不再维护。未建议替代包。

简化WordPress中的请求嗅探和数据获取。

0.1.0 2016-02-23 17:46 UTC

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安装的代码受以下许可证保护: