当前位置: 首页 > 后端技术 > PHP

PHPFacades的实现

时间:2023-03-29 15:58:19 PHP

示例$method(...$args);}//获取Facade根对象publicstaticfunctiongetFacadeRoot(){returnstatic::resolveFacadeInstance(static::getFacadeAccessor());}protectedstaticfunctionresolveFacadeInstance($name){if(is_object($name)){return$name;}if(isset(static::$resolvedInstance[$name])){returnstatic::$resolvedInstance[$name];}returnstatic::$resolvedInstance[$name]=static::$app[$name];}}classRouterextendsFacade{protectedstaticfunctiongetFacadeAccessor(){重新打开“路由器”;}}classContainer{public$binding;公共函数绑定($name,$obj){$this->binding[$name]=$obj;}publicfunctionmake($name,$args=[]){call_user_func_array($name,$args);}}//step1:首先加入服务容器/*$container=newFacade;$container->bind('router',function(){returnnewRealRoute;})*/Router::$app['router']=newRealRoute;//step2:创建类名class_alias('Router','Route');//step3:通过门面调用类方法Route::get();其他PHP魔术方法__call和__callStatic方法简单理解call_user_func和call_user_func_array这两个函数class_alias--为类创建别名

最新推荐
猜你喜欢