ClassArr.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Created by PhpStorm
  4. * User:林志杰
  5. * Email:[email protected]
  6. * Motto:纵有疾风起,人生不言弃!
  7. * Time:2020/2/8 0:44
  8. */
  9. declare(strict_types=1);
  10. namespace app\common\lib;
  11. class ClassArr
  12. {
  13. public static function smsClassStat(): array
  14. {
  15. return [
  16. "ali" => "app\common\lib\sms\AliSms",
  17. "baidu" => "app\common\lib\sms\BaiduSms",
  18. "jd" => "app\common\lib\sms\JdSms",
  19. ];
  20. }
  21. public static function uploadClassStat(): array
  22. {
  23. return [
  24. 'text' => 'xxx',
  25. 'image' => 'xxx',
  26. ];
  27. }
  28. /**
  29. * @param string $type
  30. * @param array $class
  31. * @param array $params 实例化的参数
  32. * @param bool $needInstance 是否需要实例化
  33. * @return bool|mixed|object
  34. * @throws \ReflectionException
  35. */
  36. public static function initClass(string $type, array $class, array $params = [], bool $needInstance = false)
  37. {
  38. // 如果工厂模式调用的方法是静态的,那么我们这个地方返回类库AliSms
  39. // 如果不是静态的呢,我们就需要返回 对象
  40. if (!array_key_exists($type, $class)) {
  41. return false;
  42. }
  43. $className = $class[$type];
  44. // new \ReflectionClass('A') => 简历A的反射类
  45. // ->newInstanceArgs($args) => 返回A的实例化对象,$args是实例化时传入的参数
  46. return $needInstance === true ? (new \ReflectionClass('AliSms'))->newInstanceArgs($params) : $className;
  47. }
  48. }