radnan / rdn-factory
Zend Framework 2 module to help create factory classes
Installs: 45 422
Dependents: 8
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 1
Open Issues: 0
Requires
This package is not auto-updated.
Last update: 2024-11-05 02:23:10 UTC
README
The RdnFactory ZF2 module makes it really easy to create factory classes.
How to install
-
Use
composer
to require theradnan/rdn-factory
package:$ composer require radnan/rdn-factory:1.*
-
Activate the module by including it in your
application.config.php
file:<?php return array( 'modules' => array( 'RdnFactory', // ... ), );
How to use
The module provides an RdnFactory\AbstractFactory
class that you should extend when creating your factory classes. Implement the protected create()
method to create your service.
namespace FooModule\Factory\Controller; use FooModule\Controller; use RdnFactory\AbstractFactory; class Bar extends AbstractFactory { protected function create() { // Create and return your service return new Controller\Bar; } }
This abstract factory has access to a repository of plugins, similar to a controller. Simply call the plugin as if you were calling a method:
namespace FooModule\Factory\Controller; use FooModule\Controller; use RdnFactory\AbstractFactory; class Bar extends AbstractFactory { protected function create() { $config = $this->config('foo', 'bar'); $modules = $this->service('ModuleManager'); return new Controller\Bar($config, $modules); } }
config(...$key)
Get configuration by key. You can pass multiple keys to traverse nested configuration items.
// grab the 'display_exceptions' item inside the 'view_manager' array $config = $this->config('view_manager', 'display_exceptions');
controller($name)
Get the controller with the given name.
$controller = $this->controller('FooModule:BarController');
form($name)
Get a form/fieldset/element with the given name.
$collection = $this->form('Collection'); $form = $this->form('FooModule:BarForm');
params($name)
Get a route parameter value.
$id = $this->params('bar-id');
service($name)
Get a service from the top-level service locator (service manager).
$app = $this->service('Application'); $view = $this->service('ViewRenderer'); $uploads = $this->service('RdnUpload\Container');
url($route = null, $params = array(), $options = array(), $reuseMatchedParams = false)
This is just a proxy to the url()->fromRoute()
controller plugin. Useful for generating URLs from within a factory.
$apiUrl = $this->url('foo/api/search/user');