您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

在thinkphp中实现facade的方法

2025/11/25 19:36:08发布15次查看
主要的思想是利用call_user_func_array()和容器结合使用的。
核心代码,理解都在注释中:
<?php//reqeuestfacade.php namespace facade{ class request extends facade{ public function getfacadename(){ return 'request'; } } }?><?php//facade.phpnamespace facade{ class facade{ public static function createfacade(){ $class = static::class; //在这个获取的$class其实是facade\reqeust //在这里利用static::得到getfacadename,返回真正的request的变量名 $facadeclass = static::getfacadename(); if ($facadeclass) { $class = $facadeclass; } elseif (isset(self::$bind[$class])) { $class = self::$bind[$class]; } //echo $class; 利用容器去获取reqeust,而不是facade\reqeust return \container::get($class); } public static function __callstatic($method, $params) { return call_user_func_array([static::createfacade(), $method], $params); } }}?>
下面测试代码
reqeust.php
<?phpclass request{ public $name = 'real request'; public function sayname(){ echo $this->name; }}?>
test.php
<?php use facade\request; include "container.php"; include "facade.php"; include "requestfacade.php"; include "request.php"; request::sayname();?>
推荐教程:thinkphp教程
以上就是在thinkphp中实现facade的方法的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product