可以借助Swoft下的Bean类操作容器
示例:
将类绑定至容器
use SwoftBeanAnnotationBean; /** * @Bean("imageLogic") */ class ImageLogic extends BaseLogic { /** * 根据id获取图片 * @param int $id * @return array */ public static function getOne(int $id): array { return Query::table(Image::class)->where('id',$id)->limit(1)->get(['url','thumb_url'])->getResult(); } }
从容器中取出对象:
方法一:注入
use SwoftBeanAnnotationInject; use AppModelsLogicImageLogic; class IndexController{ /** * @Inject("imageLogic") * @var ImageLogic */ private $imageLogic; public function index() { $this->imageLogic->getOne(); } }
方法二:通过 BeanFactory 类获取
use SwoftBeanBeanFactory; class IndexController { /** * @RequestMapping(route="index",method=RequestMethod::GET) */ public function index(Request $request){ //判断容器中是否存在该实例 var_dump(BeanFactory::hasBean('imageLogic')); //从容器中获取 $bean = BeanFactory::getBean('imageLogic'); return $bean->getOne(); } }