ServiceAppAop.php 853 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace App\Traits;
  3. use Illuminate\Contracts\Foundation\Application;
  4. trait ServiceAppAop
  5. {
  6. /**
  7. * 实例化一个service的入口,为了测试方便做出来的,这样测试时可以代入假的柱件替换service的实现
  8. * 应当在一般性用app的地方换成本方法才可以做到使用柱件
  9. * @param $targetService
  10. * @param $abstract
  11. * @return Application|mixed|string
  12. */
  13. public function instant(&$targetService, $abstract){
  14. if(!is_string($targetService)){
  15. if(empty($targetService))
  16. $targetService=app($abstract);
  17. return $targetService;
  18. }
  19. if(!is_string($abstract)){
  20. $this->$targetService=$abstract;
  21. }else{
  22. $this->$targetService=app($abstract);
  23. }
  24. return $targetService;
  25. }
  26. }