Rumah > php教程 > PHP源码 > teks badan

利用Box(箱子来管理类的创建和方法的调用)

PHP中文网
Lepaskan: 2016-05-25 17:07:04
asal
996 orang telah melayarinya

php代码

<?php

/**
	利用php的变量传导特性,建立一个资源调度类,来统一加载和调度需要的类并声明
	同时利用反射类调用类中的方法
	需要传递的方法为:
	$_className:类的名字
	$methodName:方法的名字
	$avgArr = array("arvName"=>&#39;value&#39;....)
**/
class Sys_Box{
	//声明一个进程内资源对象
	public static $_modelObjArr = array();
	//获取资源对象 默认$_typeStr = &#39;class&#39;
	public static function invoke($_className,$methodName,$avgArr = array()){
	
		//检测变量是否合法
		if(empty($_className) || empty($methodName) || !is_string($_className) || !is_string($methodName)){
			echo "Argument is error";exit;
		}
		//资源已经存在不再创建
		if(!isset(self::$_modelObjArr[$_className])){
			//都是用本地类
			if(!Yaf_Loader::getInstance()->isLocalName($_className)){
				self::$_modelObjArr[$_className] = new $_className();
			}else{
				echo $_className." is not exists";exit;
			}

		}	
		//检测$_className是否存在$methodName方法
		if(!method_exists(self::$_modelObjArr[$_className],$methodName)){
			echo $_className." don&#39;t has the method:".$methodName;exit;
		}
		
		if(empty($avgArr)){
			return self::$_modelObjArr[$_className]->$methodName();
		}else{
			return self::$_modelObjArr[$_className]->$methodName($avgArr);
		}
		
	}
	
	//另外加载数据对象到静态数据组中去
	public static function setObjArr($obj){
		//检测是否存存在已经创建的好的对象
		!isset(self::$_modelObjArr[$obj]) && self::$_modelObjArr[$obj] = $obj;
	}
}
Salin selepas log masuk
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan