对自定义类优化的方式
最后更新于:2022-04-02 02:21:05
[TOC]
## 静态方法
原始的方式,尽可能把方法转为静态,一般用于对类依赖不高的方法
```
namespace App\Lib;
class Add {
public static function add(int $a,int $b){
return $a+$b;
}
}
```
//调用
```
Add::add(1, 2);//3
```
## 依赖注入
缺陷是没有友好的代码提示
```
namespace App\Lib;
class Add {
public function add(int $a,int $b){
return $a+$b;
}
}
```
```
注入容器
\EasySwoole\Component\Di::getInstance()->set("add",\App\Lib\Add::class);
//调用容器中的方法
$add = \EasySwoole\Component\Di::getInstance()->get("add");
$add->add(1,2);//3
```
## 单例模式
可对无法做静态化的方法进行静态调用,用于复杂方法
```
namespace App\lib;
class Redis{
// 重点需要引入提供的单例 trait
use \EasySwoole\Component\Singleton;
public $redis;
private function __construct(){
if(!extension_loaded("redis")){
throw new \Exception("redis.io 文件不存在");
}
try{
$this->redis = new \Redis();
$result = $this->redis->connect("127.0.0.1", 6379, 3);
} catch (\Exception $e){
throw new \Exception("redis 服务器异常");
}
if ($result===false){
throw new \Exception("redis connect is failed");
}
}
public function get($key){
if (empty($key)) {
return '';
}
return $this->redis->get($key);
}
public function set($key, $value){
return $this->redis->set($key, $value);
}
}
```
调用
```
\App\Lib\Add::getInstance()->add(1, 2);//3
```
';