Default Changelist

This commit is contained in:
xl
2023-07-11 21:04:33 +08:00
parent 191624b7e6
commit b66d1de244
6 changed files with 178 additions and 148 deletions
+4 -5
View File
@@ -12,7 +12,6 @@ class Container
/** @var Container */ /** @var Container */
private static $_instance; private static $_instance;
/** @var \common\Config */
private $config; private $config;
private $container = []; private $container = [];
@@ -38,8 +37,8 @@ class Container
if (static::$_instance->exists($class)) { if (static::$_instance->exists($class)) {
$newInstance = static::$_instance->get($class); $newInstance = static::$_instance->get($class);
if (method_exists($newInstance, 'initConfig')) { if (method_exists($newInstance, 'setConfig')) {
$newInstance->initConfig($config); $newInstance->setConfig($config);
} }
return $newInstance; return $newInstance;
} else { } else {
@@ -71,8 +70,8 @@ class Container
throw new Exception('Class Con\'t instance.'); throw new Exception('Class Con\'t instance.');
} }
$newInstance = $newInstance->newInstance(); $newInstance = $newInstance->newInstance();
if (method_exists($newInstance, 'initConfig')) { if (method_exists($newInstance, 'setConfig')) {
$newInstance->initConfig($this->config); $newInstance->setConfig($this->config);
} }
$this->container[$class] = $newInstance; $this->container[$class] = $newInstance;
-2
View File
@@ -18,8 +18,6 @@ abstract class Multiprogramming implements Progaram
protected static ?Multiprogramming $instance = null; protected static ?Multiprogramming $instance = null;
protected ?HttpClient $request = null;
protected int $errorCode = 0; protected int $errorCode = 0;
protected string $errorMsg = ''; protected string $errorMsg = '';
+151 -112
View File
@@ -2,7 +2,9 @@
namespace wchat\common; namespace wchat\common;
use Exception;
use JetBrains\PhpStorm\ArrayShape; use JetBrains\PhpStorm\ArrayShape;
use Kiri\Client;
/** /**
* Class Result * Class Result
@@ -17,126 +19,163 @@ use JetBrains\PhpStorm\ArrayShape;
class Result class Result
{ {
private ?int $startTime; private ?int $startTime;
private ?int $requestTime; private ?int $requestTime;
private ?int $runTime; private ?int $runTime;
/** /**
* @param int $code * @param int $code
* @param string $message * @param string $message
* @param int $count * @param int $count
* @param mixed $data * @param mixed $data
* @param array $header * @param array $header
*/ */
public function __construct(public int $code, public string $message = '', public int $count = 0, public mixed $data = [], public array $header = [],) public function __construct(public int $code, public string $message = '', public int $count = 0, public mixed $data = [], public array $header = [],)
{ {
} }
/** /**
* @param $name * @param string $data
* @return mixed * @return static
*/ */
public function __get($name) public static function wxInit(string $data): static
{ {
return $this->$name; $json = json_decode($data, true);
} if (isset($json['errcode']) && $json['errcode'] != 0) {
return new Result(code: $json['errcode'], message: $json['errmsg']);
} else {
return new Result(code: 0, data: $json);
}
}
/** /**
* @param $name * @param Client $client
* @param $value * @return static
* @return $this */
*/ public static function init(Client $client): static
public function __set($name, $value) {
{ if (!in_array($client->getStatusCode(), [101, 200, 201])) {
$this->$name = $value; return new Result(code: 505, message: 'network error.');
}
return $this; $body = json_decode($client->getBody(), true);
} if (isset($body['errcode']) && $body['errcode'] != 0) {
return new Result(code: $body['errcode'], message: $body['errmsg']);
/** } else {
* @return array return new Result(code: 0, data: $body);
*/ }
#[ArrayShape(['startTime' => "int|null", 'requestTime' => "int|null", 'runTime' => "int|null"])] }
public function getTime(): array
{
return [
'startTime' => $this->startTime,
'requestTime' => $this->requestTime,
'runTime' => $this->runTime,
];
}
/**
* @param $key
* @param $data
* @return $this
* @throws \Exception
*/
public function setAttr($key, $data): static
{
if (!property_exists($this, $key)) {
throw new \Exception('未查找到相应对象属性');
}
$this->$key = $data;
return $this;
}
/**
* @return bool
*/
public function isResultsOK(): bool
{
if (!is_numeric($this->code)) {
return false;
}
return $this->code == 0;
}
/** /**
* @param string $name * @param $name
* @return mixed * @return mixed
*/ */
public function getData(string $name = ''): mixed public function __get($name)
{ {
if (!$this->isResultsOK()) { return $this->$name;
return $this->data; }
}
if (!empty($name) && isset($this->data[$name])) {
return $this->data[$name];
}
return $this->data;
}
/**
* @param $key
* @param $data
* @return $this
*/
public function append($key, $data): static
{
if (!is_array($this->data)) {
$this->data = ['origin' => $this->data];
}
$this->data[$key] = $data;
return $this;
}
/** /**
* @return string * @param $name
*/ * @param $value
public function getMessage(): string * @return $this
{ */
return $this->message; public function __set($name, $value)
} {
$this->$name = $value;
/** return $this;
* @return int }
*/
public function getCode(): int /**
{ * @return array
return $this->code; */
} #[ArrayShape(['startTime' => "int|null", 'requestTime' => "int|null", 'runTime' => "int|null"])]
public function getTime(): array
{
return [
'startTime' => $this->startTime,
'requestTime' => $this->requestTime,
'runTime' => $this->runTime,
];
}
/**
* @param $key
* @param $data
* @return $this
* @throws Exception
*/
public function setAttr($key, $data): static
{
if (!property_exists($this, $key)) {
throw new Exception('未查找到相应对象属性');
}
$this->$key = $data;
return $this;
}
/**
* @return bool
*/
public function isResultsOK(): bool
{
if (!is_numeric($this->code)) {
return false;
}
return $this->code == 0;
}
/**
* @param string $name
* @return mixed
*/
public function getData(string $name = ''): mixed
{
if (!$this->isResultsOK()) {
return $this->data;
}
if (!is_array($this->data)) {
return $this->data;
}
if ($name != '') {
return $this->data[$name] ?? null;
} else {
return $this->data;
}
}
/**
* @param $key
* @param $data
* @return $this
*/
public function append($key, $data): static
{
if (!is_array($this->data)) {
$this->data = ['origin' => $this->data];
}
$this->data[$key] = $data;
return $this;
}
/**
* @return string
*/
public function getMessage(): string
{
return $this->message;
}
/**
* @return int
*/
public function getCode(): int
{
return $this->code;
}
} }
+1 -11
View File
@@ -9,8 +9,6 @@
namespace wchat\qq; namespace wchat\qq;
use Kiri\Client; use Kiri\Client;
use wchat\common\Decode;
use wchat\common\HttpClient;
use wchat\common\Result; use wchat\common\Result;
class Account extends SmallProgram class Account extends SmallProgram
@@ -32,15 +30,7 @@ class Account extends SmallProgram
$client->get('sns/jscode2session', $param); $client->get('sns/jscode2session', $param);
$client->close(); $client->close();
if (!in_array($client->getStatusCode(), [101, 200, 201])) { return Result::init($client);
return new Result(code: 505, message: 'network error.');
}
$body = json_decode($client->getBody(), true);
if (isset($body['errcode']) && $body['errcode'] != 0) {
return new Result(code: $body['errcode'], message: $body['errmsg']);
} else {
return new Result(code: 0, data: $body);
}
} }
} }
+8 -6
View File
@@ -3,20 +3,22 @@
namespace wchat\wx; namespace wchat\wx;
use Kiri\Di\Container; use Kiri\Di\Container;
use ReflectionException;
use wchat\common\Config; use wchat\common\Config;
class QqFactory class QqFactory
{ {
/** /**
* @param $class * @param $class
* @param Config $config * @param Config $config
* @return mixed * @return mixed
*/ * @throws ReflectionException
*/
public static function get($class, Config $config): mixed public static function get($class, Config $config): mixed
{ {
$container = Container::getInstance(); $container = Container::instance();
$object = $container->get($class); $object = $container->get($class);
$object->setConfig($config); $object->setConfig($config);
return $object; return $object;
+14 -12
View File
@@ -3,24 +3,26 @@
namespace wchat\wx; namespace wchat\wx;
use Kiri\Di\Container; use Kiri\Di\Container;
use ReflectionException;
use wchat\common\Config; use wchat\common\Config;
class WxFactory class WxFactory
{ {
/** /**
* @param $class * @param $class
* @param Config $config * @param Config $config
* @return mixed * @return object|null
*/ * @throws ReflectionException
public static function get($class, Config $config) */
{ public static function get($class, Config $config): ?object
$container = Container::getInstance(); {
$object = $container->get($class); $container = Container::instance();
$object->setConfig($config); $object = $container->get($class);
return $object; $object->setConfig($config);
} return $object;
}
} }