
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