class Container extends \PHPixie\DI\Container\Root { public function configure() { // $this->value('apiToken', '1234567890'); // $this->callback('addFive', function($a, $b) { return $a + $b; }); // , // $this->build('twitterService', function() { return new TwitterService($this->apiToken()); // return new TwitterService($this->get('apiToken')); }); // : $this->instance('twitterService', TwitterService::class, ['@apiToken']); // '@' // $this->group('user', function() { $this->instance('repository', UserRepository::class, ['@twitterService']); }); } } // $container = new Container(); // $container->get('apiToken'); $container->apiToken(); // // Container::apiToken(); Container::get('apiToken'); // // $container->add(6, 7); // 13 $container->call('add', [6, 7]); $callable = $container->get('add'); $callable(6, 7); // $container->get('user.repository'); $userGroup = $container->user(); $userGroup->repository(); Container::user()->repository(); // ...
$container->get('twitterService.getTweets'); // $container->twitterService()->getTweets(); // $container->call('twitterService.getTweets.first.delete', [true]); // $container->twitterService()->getTweets()->first()->delete(true); //
/** * @method TwitterService twitterService() * @method static TwitterService twitterService() */ class Container { //... }
namespace Project\App; // , // class Container extends \PHPixie\DefaultBundle\Container { public function configure() { //.... parent::configure(); } }
namespace Project\App; class Builder extends \PHPixie\DefaultBundle\Builder { protected function buildContainer() { return new Container($this); } }
$container = $builder->container(); $container->get('components.orm'); $query = $container->call('components.orm.query', ['user']); $builder = Container::builder(); $frameworkBuilder = Container::frameworkBuilder();
Source: https://habr.com/ru/post/301648/
All Articles