modify
This commit is contained in:
@@ -211,7 +211,7 @@ class Connection extends Component
|
||||
*/
|
||||
private function connections(): \Snowflake\Pool\Connection
|
||||
{
|
||||
return Snowflake::app()->getMysqlFromPool();
|
||||
return Snowflake::getDi()->get(\Snowflake\Pool\Connection::class);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace Snowflake\Abstracts;
|
||||
|
||||
|
||||
use Annotation\Annotation as SAnnotation;
|
||||
use Database\Connection;
|
||||
use Exception;
|
||||
use HttpServer\Client\Http2;
|
||||
use HttpServer\Http\HttpHeaders;
|
||||
@@ -24,20 +25,19 @@ use HttpServer\Shutdown;
|
||||
use JetBrains\PhpStorm\Pure;
|
||||
use Kafka\KafkaProvider;
|
||||
use ReflectionException;
|
||||
use Rpc\Producer;
|
||||
use Rpc\Service;
|
||||
use Server\ServerManager;
|
||||
use Snowflake\Aop;
|
||||
use Snowflake\Async;
|
||||
use Snowflake\Cache\Redis;
|
||||
use Snowflake\Di\Service;
|
||||
use Snowflake\Di\LocalService;
|
||||
use Snowflake\Error\ErrorHandler;
|
||||
use Snowflake\Error\Logger;
|
||||
use Snowflake\Event;
|
||||
use Snowflake\Exception\InitException;
|
||||
use Snowflake\Exception\NotFindClassException;
|
||||
use Snowflake\Jwt\Jwt;
|
||||
use Snowflake\Pool\Connection;
|
||||
use Snowflake\Pool\Pool;
|
||||
use Snowflake\Pool\Redis as SRedis;
|
||||
use Snowflake\Snowflake;
|
||||
use Swoole\Table;
|
||||
|
||||
@@ -269,7 +269,7 @@ abstract class BaseApplication extends Component
|
||||
*/
|
||||
public function get($name): mixed
|
||||
{
|
||||
return di(Service::class)->get($name);
|
||||
return di(LocalService::class)->get($name);
|
||||
}
|
||||
|
||||
|
||||
@@ -329,26 +329,6 @@ abstract class BaseApplication extends Component
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Connection
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getMysqlFromPool(): Connection
|
||||
{
|
||||
return $this->get('connections');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return SRedis
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getRedisFromPool(): SRedis
|
||||
{
|
||||
return $this->get('redis_connections');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
* @return Table
|
||||
@@ -433,7 +413,7 @@ abstract class BaseApplication extends Component
|
||||
* @return \Rpc\Producer
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getRpc(): \Rpc\Producer
|
||||
public function getRpc(): Producer
|
||||
{
|
||||
return $this->get('rpc');
|
||||
}
|
||||
@@ -446,7 +426,7 @@ abstract class BaseApplication extends Component
|
||||
*/
|
||||
private function setComponents($array): void
|
||||
{
|
||||
di(Service::class)->setComponents($array);
|
||||
di(LocalService::class)->setComponents($array);
|
||||
}
|
||||
|
||||
|
||||
@@ -458,7 +438,7 @@ abstract class BaseApplication extends Component
|
||||
*/
|
||||
public function set($id, $definition): void
|
||||
{
|
||||
di(Service::class)->set($id, $definition);
|
||||
di(LocalService::class)->set($id, $definition);
|
||||
}
|
||||
|
||||
|
||||
@@ -470,7 +450,7 @@ abstract class BaseApplication extends Component
|
||||
*/
|
||||
public function has($id): bool
|
||||
{
|
||||
return di(Service::class)->has($id);
|
||||
return di(LocalService::class)->has($id);
|
||||
}
|
||||
|
||||
|
||||
@@ -481,27 +461,23 @@ abstract class BaseApplication extends Component
|
||||
{
|
||||
$this->setComponents([
|
||||
'error' => ['class' => ErrorHandler::class],
|
||||
'connections' => ['class' => Connection::class],
|
||||
'redis_connections' => ['class' => SRedis::class],
|
||||
'config' => ['class' => Config::class],
|
||||
'logger' => ['class' => Logger::class],
|
||||
'annotation' => ['class' => SAnnotation::class],
|
||||
'router' => ['class' => Router::class],
|
||||
'event' => ['class' => Event::class],
|
||||
'redis' => ['class' => Redis::class],
|
||||
'databases' => ['class' => \Database\Connection::class],
|
||||
'databases' => ['class' => Connection::class],
|
||||
'aop' => ['class' => Aop::class],
|
||||
'input' => ['class' => HttpParams::class],
|
||||
'header' => ['class' => HttpHeaders::class],
|
||||
'jwt' => ['class' => Jwt::class],
|
||||
'async' => ['class' => Async::class],
|
||||
'kafka-container' => ['class' => KafkaProvider::class],
|
||||
'filter' => ['class' => HttpFilter::class],
|
||||
'goto' => ['class' => BaseGoto::class],
|
||||
'response' => ['class' => Response::class],
|
||||
'request' => ['class' => Request::class],
|
||||
'rpc' => ['class' => \Rpc\Producer::class],
|
||||
'rpc-service' => ['class' => \Rpc\Service::class],
|
||||
'rpc' => ['class' => Producer::class],
|
||||
'rpc-service' => ['class' => Service::class],
|
||||
'http2' => ['class' => Http2::class],
|
||||
'shutdown' => ['class' => Shutdown::class],
|
||||
]);
|
||||
|
||||
@@ -35,7 +35,6 @@ use Snowflake\Pool\Pool;
|
||||
* @property Request $request
|
||||
* @property DatabasesProviders $db
|
||||
* @property Async $async
|
||||
* @property Connection $connections
|
||||
* @property Logger $logger
|
||||
* @property Jwt $jwt
|
||||
* @property SAnnotation $annotation
|
||||
|
||||
@@ -19,11 +19,11 @@ use Snowflake\Core\Json;
|
||||
use Snowflake\Events\EventProvider;
|
||||
use Snowflake\Exception\ConfigException;
|
||||
use Snowflake\Snowflake;
|
||||
use Snowflake\Pool\Redis as PoolRedis;
|
||||
|
||||
/**
|
||||
* Class Redis
|
||||
* @package Snowflake\Snowflake\Cache
|
||||
* @see \Redis
|
||||
* @mixin \Redis
|
||||
*/
|
||||
class Redis extends Component
|
||||
@@ -42,7 +42,7 @@ class Redis extends Component
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$connections = Snowflake::app()->getRedisFromPool();
|
||||
$connections = Snowflake::getDi()->get(PoolRedis::class);
|
||||
|
||||
$config = $this->get_config();
|
||||
|
||||
@@ -114,7 +114,7 @@ SCRIPT;
|
||||
*/
|
||||
public function release()
|
||||
{
|
||||
$connections = Snowflake::app()->getRedisFromPool();
|
||||
$connections = Snowflake::getDi()->get(PoolRedis::class);
|
||||
$connections->release($this->get_config(), true);
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ SCRIPT;
|
||||
*/
|
||||
public function destroy()
|
||||
{
|
||||
$connections = Snowflake::app()->getRedisFromPool();
|
||||
$connections = Snowflake::getDi()->get(PoolRedis::class);
|
||||
$connections->destroy($this->get_config(), true);
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ SCRIPT;
|
||||
*/
|
||||
public function proxy(): \Redis
|
||||
{
|
||||
$connections = Snowflake::app()->getRedisFromPool();
|
||||
$connections = Snowflake::getDi()->get(PoolRedis::class);
|
||||
|
||||
$config = $this->get_config();
|
||||
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Snowflake\Di;
|
||||
|
||||
use Annotation\Inject;
|
||||
use Snowflake\Abstracts\Component;
|
||||
use Snowflake\Snowflake;
|
||||
|
||||
|
||||
/**
|
||||
* 服务定位器
|
||||
*/
|
||||
class LocalService extends Component
|
||||
{
|
||||
|
||||
|
||||
private array $_components = [];
|
||||
|
||||
|
||||
private array $_definition = [];
|
||||
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
* @param $define
|
||||
*/
|
||||
public function set($name, $define)
|
||||
{
|
||||
unset($this->_components[$name]);
|
||||
|
||||
$this->_definition[$name] = $define;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function get(string $name, $throwException = true)
|
||||
{
|
||||
if (isset($this->_components[$name])) {
|
||||
return $this->_components[$name];
|
||||
}
|
||||
if (isset($this->_definitions[$name])) {
|
||||
$definition = $this->_definitions[$name];
|
||||
if (is_object($definition) && !$definition instanceof \Closure) {
|
||||
return $this->_components[$name] = $definition;
|
||||
}
|
||||
return $this->_components[$name] = Snowflake::createObject($definition);
|
||||
} else if ($throwException) {
|
||||
throw new \Exception("Unknown component ID: $name");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $components
|
||||
*/
|
||||
public function setComponents(array $components)
|
||||
{
|
||||
foreach ($components as $name => $component) {
|
||||
$this->set($name, $component);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return bool
|
||||
*/
|
||||
public function has($id): bool
|
||||
{
|
||||
return isset($this->_components[$id], $this->_definition[$id]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
*/
|
||||
public function remove($id): void
|
||||
{
|
||||
unset($this->_components[$id], $this->_definition[$id]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,165 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: whwyy
|
||||
* Date: 2018/4/25 0025
|
||||
* Time: 18:29
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Snowflake\Di;
|
||||
|
||||
|
||||
use Exception;
|
||||
use JetBrains\PhpStorm\Pure;
|
||||
use Snowflake\Abstracts\Component;
|
||||
use Snowflake\Exception\ComponentException;
|
||||
use Snowflake\Snowflake;
|
||||
|
||||
/**
|
||||
* Class Service
|
||||
* @package Snowflake\Snowflake\Di
|
||||
*/
|
||||
class Service extends Component
|
||||
{
|
||||
|
||||
private array $_components = [];
|
||||
|
||||
|
||||
private array $_definition = [];
|
||||
|
||||
|
||||
private array $_ids = [];
|
||||
|
||||
|
||||
protected array $_alias = [];
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @param bool $try
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
public function get($id, bool $try = true): mixed
|
||||
{
|
||||
if (isset($this->_components[$id])) {
|
||||
return $this->_components[$id];
|
||||
}
|
||||
$config = $this->_getConfig($id, $try);
|
||||
if (!is_object($config)) {
|
||||
$config = Snowflake::createObject($config);
|
||||
}
|
||||
return $this->_components[$id] = $config;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @param $try
|
||||
* @return mixed
|
||||
* @throws ComponentException
|
||||
*/
|
||||
private function _getConfig($id, $try): mixed
|
||||
{
|
||||
$config = $this->_definition[$id] ?? $this->_alias[$id] ?? null;
|
||||
if (is_null($config)) {
|
||||
if ($try === false) {
|
||||
return null;
|
||||
}
|
||||
throw new ComponentException("Unknown component ID: $id");
|
||||
}
|
||||
return $config;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $className
|
||||
* @param string $alias
|
||||
*/
|
||||
public function setAlias(string $className, string $alias)
|
||||
{
|
||||
$this->_alias[$className] = $alias;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @param $definition
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
public function set($id, $definition): void
|
||||
{
|
||||
if ($definition === NULL) {
|
||||
$this->remove($id);
|
||||
return;
|
||||
}
|
||||
$this->_ids[] = $id;
|
||||
unset($this->_components[$id]);
|
||||
if (is_object($definition)) {
|
||||
$this->_components[$id] = $definition;
|
||||
$this->_definition[$id] = $definition;
|
||||
} else if (!is_array($definition)) {
|
||||
throw new ComponentException("Unexpected configuration type for the \"$id\" component: " . gettype($definition));
|
||||
} else {
|
||||
$this->_definition[$id] = $definition;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return bool
|
||||
*/
|
||||
#[Pure] public function has($id): bool
|
||||
{
|
||||
return in_array($id, $this->_ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @throws Exception
|
||||
*/
|
||||
public function setComponents(array $data)
|
||||
{
|
||||
foreach ($data as $key => $val) {
|
||||
$this->set($key, $val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
public function __get($name): mixed
|
||||
{
|
||||
if ($this->has($name)) {
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
return parent::__get($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return bool
|
||||
*/
|
||||
public function remove($id): bool
|
||||
{
|
||||
$component = $this->_components[$id];
|
||||
$className = $component::class;
|
||||
|
||||
unset($component, $this->_components[$id]);
|
||||
unset($this->_definition[$id]);
|
||||
if (isset($this->_alias[$id])) {
|
||||
unset($this->_components[$this->_alias[$id]]);
|
||||
unset($this->_definition[$this->_alias[$id]]);
|
||||
unset($this->_alias[$id]);
|
||||
}
|
||||
|
||||
Snowflake::getDi()->unset($className);
|
||||
|
||||
return $this->has($id);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,9 @@ trait JwtHelper
|
||||
private string $secret = '';
|
||||
|
||||
|
||||
private string $scene = 'default';
|
||||
|
||||
|
||||
private string $encrypt = 'sha256';
|
||||
|
||||
|
||||
@@ -81,6 +84,13 @@ mlAZUEjsoaT9vjvjGTxl3uCm0TX5KTgtSJIt2kA1tYVjQef+/iZTHxY=
|
||||
$this->timeout = $timeout;
|
||||
}
|
||||
|
||||
|
||||
public function setScene(string $scene)
|
||||
{
|
||||
$this->scene = $scene;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $timeout
|
||||
*/
|
||||
|
||||
+591
-596
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user