最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

在thinkphp中实现facade的方法

来源:动视网 责编:小采 时间:2020-11-03 18:15:27
文档

在thinkphp中实现facade的方法

在thinkphp中实现facade的方法:主要的思想是利用call_user_func_array()和容器结合使用的。核心代码,理解都在注释中:<php //reqeuestFacade.php namespace facade{ class Request extends Facade{ public function getFacadeName(){ re
推荐度:
导读在thinkphp中实现facade的方法:主要的思想是利用call_user_func_array()和容器结合使用的。核心代码,理解都在注释中:<php //reqeuestFacade.php namespace facade{ class Request extends Facade{ public function getFacadeName(){ re


主要的思想是利用call_user_func_array()和容器结合使用的。

核心代码,理解都在注释中:

<?php
//reqeuestFacade.php
 namespace facade{
 class Request extends Facade{
 public function getFacadeName(){
 return 'request';
 }
 }
 }

?>

<?php
//facade.php
namespace facade{
 class Facade{

 public static function createFacade(){
 $class = static::class; //在这个获取的$class其实是facade
eqeust
 //在这里利用static::得到getFacadeName,返回真正的request的变量名
 $facadeClass = static::getFacadeName();

 if ($facadeClass) {
 $class = $facadeClass;
 } elseif (isset(self::$bind[$class])) {
 $class = self::$bind[$class];
 }
 //echo $class;
 利用容器去获取reqeust,而不是facade
eqeust
 return Container::get($class);
 }
 
 public static function __callStatic($method, $params)
 {
 return call_user_func_array([static::createFacade(), $method], $params);
 }
 }
}


?>

下面测试代码

reqeust.php

<?php

class Request{
 public $name = 'Real Request';

 public function sayName(){
 echo $this->name;
 }

}

?>

test.php

<?php

 use facadeRequest;

 include "Container.php";
 include "Facade.php";
 include "RequestFacade.php";
 include "Request.php";

 Request::sayName();

?>

推荐教程:thinkphp教程

文档

在thinkphp中实现facade的方法

在thinkphp中实现facade的方法:主要的思想是利用call_user_func_array()和容器结合使用的。核心代码,理解都在注释中:<php //reqeuestFacade.php namespace facade{ class Request extends Facade{ public function getFacadeName(){ re
推荐度:
标签: tp php thinkphp
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top