diff --git a/library/traits/think/instance.php b/library/traits/think/instance.php new file mode 100644 index 00000000..a32fb462 --- /dev/null +++ b/library/traits/think/instance.php @@ -0,0 +1,40 @@ + +// +---------------------------------------------------------------------- + +namespace traits\think; + +trait Instance +{ + protected static $instance = null; + + // 实例化(单例) + public static function instance($options = []) + { + if (is_null(self::$instance)) { + self::$instance = new self($options); + } + return self::$instance; + } + + // 静态调用 + public static function __callStatic($method, $params) + { + if (is_null(self::$instance)) { + self::$instance = new self(); + } + $call = substr($method, 1); + if (0 === strpos($method, '_') && is_callable([self::$instance, $call])) { + return call_user_func_array([self::$instance, $call], $params); + } else { + throw new \think\Exception("not exists method:" . $method); + } + } +}