Latest release: 1.0.0-beta9
PHP >= 5.3.9
The Puli Discovery Component supports binding of Puli resources to binding
types. Binding types can be defined with the addBindingType()
method of the
EditableDiscovery
interface:
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'));
Resources in the repository can then be bound to the defined type by passing a
ResourceBinding
to addBinding()
:
use Puli\Discovery\Binding\ResourceBinding;
$discovery->addBinding(new ResourceBinding('/app/config/doctrine/*.xml', 'doctrine/xml-mapping'));
With findBindings()
, you can later retrieve all the bindings for the type:
foreach ($discovery->findBindings('doctrine/xml-mapping') as $binding) {
foreach ($binding->getResources() as $resource) {
// do something...
}
}
The following Discovery
implementations are currently supported:
Read the Resource Discovery guide in the Puli documentation to learn more about resource discovery.
You can also bind classes to binding types. By convention, the common interface of all bound classes is used as binding type:
$discovery->addBindingType(new BindingType(Plugin::class));
Classes can be bound by adding ClassBinding
instances:
use Puli\Discovery\Binding\ClassBinding;
$discovery->addBinding(new ClassBinding(MyPlugin::class, Plugin::class));
As before, use findBindings()
to find all bindings for a binding type:
foreach ($discovery->findBindings(Plugin::class) as $binding) {
$pluginClass = $binding->getClassName();
$plugin = new $pluginClass();
// do something...
}
Follow the Installation guide guide to install Puli in your project.
Read the Puli Documentation to learn more about Puli.
Contributions to Puli are always welcome!
- Report any bugs or issues you find on the issue tracker.
- You can grab the source code at Puli’s Git repository.
If you are having problems, send a mail to [email protected] or shout out to @webmozart on Twitter.
All contents of this package are licensed under the MIT license.