<?php/** This file is part of the overtrue/wechat.** (c) overtrue <i@overtrue.me>** This source file is subject to the MIT license that is bundled* with this source code in the file LICENSE.*/namespace EasyWeChat\Kernel;use EasyWeChat\Kernel\Providers\ConfigServiceProvider;use EasyWeChat\Kernel\Providers\EventDispatcherServiceProvider;use EasyWeChat\Kernel\Providers\ExtensionServiceProvider;use EasyWeChat\Kernel\Providers\HttpClientServiceProvider;use EasyWeChat\Kernel\Providers\LogServiceProvider;use EasyWeChat\Kernel\Providers\RequestServiceProvider;use EasyWeChatComposer\Traits\WithAggregator;use Pimple\Container;/*** Class ServiceContainer.** @author overtrue <i@overtrue.me>** @property \EasyWeChat\Kernel\Config $config* @property \Symfony\Component\HttpFoundation\Request $request* @property \GuzzleHttp\Client $http_client* @property \Monolog\Logger $logger* @property \Symfony\Component\EventDispatcher\EventDispatcher $events*/class ServiceContainer extends Container{use WithAggregator;/*** @var string*/protected $id;/*** @var array*/protected $providers = [];/*** @var array*/protected $defaultConfig = [];/*** @var array*/protected $userConfig = [];/*** Constructor.** @param array $config* @param array $prepends* @param string|null $id*/public function __construct(array $config = [], array $prepends = [], string $id = null){$this->registerProviders($this->getProviders());parent::__construct($prepends);$this->userConfig = $config;$this->id = $id;$this->aggregate();$this->events->dispatch(new Events\ApplicationInitialized($this));}/*** @return string*/public function getId(){return $this->id ?? $this->id = md5(json_encode($this->userConfig));}/*** @return array*/public function getConfig(){$base = [// http://docs.guzzlephp.org/en/stable/request-options.html'http' => ['timeout' => 30.0,'base_uri' => 'https://api.weixin.qq.com/',],];return array_replace_recursive($base, $this->defaultConfig, $this->userConfig);}/*** Return all providers.** @return array*/public function getProviders(){return array_merge([ConfigServiceProvider::class,LogServiceProvider::class,RequestServiceProvider::class,HttpClientServiceProvider::class,ExtensionServiceProvider::class,EventDispatcherServiceProvider::class,], $this->providers);}/*** @param string $id* @param mixed $value*/public function rebind($id, $value){$this->offsetUnset($id);$this->offsetSet($id, $value);}/*** Magic get access.** @param string $id** @return mixed*/public function __get($id){if ($this->shouldDelegate($id)) {return $this->delegateTo($id);}return $this->offsetGet($id);}/*** Magic set access.** @param string $id* @param mixed $value*/public function __set($id, $value){$this->offsetSet($id, $value);}/*** @param array $providers*/public function registerProviders(array $providers){foreach ($providers as $provider) {parent::register(new $provider());}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。