puli/discovery

在Puli包中发布和发现工件。

1.0.0-beta9 2016-01-14 10:18 UTC

README

Build Status Build status Scrutinizer Code Quality Latest Stable Version Total Downloads Dependency Status

最新版本: 1.0.0-beta9

PHP >= 5.3.9

Puli 发现组件支持将Puli资源绑定到绑定类型。绑定类型可以使用EditableDiscovery接口的addBindingType()方法定义

use Puli\Discovery\Api\Type\BindingType;
use Puli\Discovery\Binding\Initializer\ResourceBindingInitializer;
use Puli\Discovery\InMemoryDiscovery;

$discovery = new InMemoryDiscovery(array(
    // $repo is a Puli\Repository\Api\ResourceRepository instance
    new ResourceBindingInitializer($repo),
));

$discovery->addBindingType(new BindingType('doctrine/xml-mapping'));

资源绑定

然后,可以通过将ResourceBinding传递给addBinding()将存储库中的资源绑定到定义的类型

use Puli\Discovery\Binding\ResourceBinding;

$discovery->addBinding(new ResourceBinding('/app/config/doctrine/*.xml', 'doctrine/xml-mapping'));

使用findBindings(),您可以稍后检索类型的所有绑定

foreach ($discovery->findBindings('doctrine/xml-mapping') as $binding) {
    foreach ($binding->getResources() as $resource) {
        // do something...
    }
}

当前支持以下Discovery实现

阅读Puli文档中的资源发现指南以了解更多关于资源发现的信息。

类绑定

您还可以将类绑定到绑定类型。按照惯例,所有绑定类的公共接口用作绑定类型

$discovery->addBindingType(new BindingType(Plugin::class));

可以通过添加ClassBinding实例来绑定类

use Puli\Discovery\Binding\ClassBinding;

$discovery->addBinding(new ClassBinding(MyPlugin::class, Plugin::class));

像以前一样,使用findBindings()查找绑定类型的所有绑定

foreach ($discovery->findBindings(Plugin::class) as $binding) {
    $pluginClass = $binding->getClassName();
    $plugin = new $pluginClass();
    
    // do something...
}

作者

安装

遵循安装指南在项目中安装Puli。

文档

阅读Puli 文档以了解有关Puli的更多信息。

贡献

Puli总是欢迎贡献!

支持

如果您遇到问题,请发送电子邮件至[email protected]或通过Twitter向@webmozart提问。

许可证

本软件包的所有内容均受MIT许可证的许可。