php 注册树设计模式
tp5.1/extend/Register.php
<?php
/**
* 注册书模式
* 注册树模式通过将对象实例注册到一颗全局的对象书上
* 需要的时候从对象树上拿出来使用即可
*
* Class Register
*/
class Register
{
/**
* 注册树池子
* @var null
*/
protected static $objects = null;
/**
* 将对象挂到树上
* @param $key
* @param $object
*/
public static function setObjects($key,$object)
{
self::$objects[$key]=$object;
}
/**
* 从树上回去对象, 如果没有则注册
* @return mixed
*/
public static function getObjects($key)
{
if (!isset(self::$objects[$key])){
self::$objects[$key]= new $key;
}
return self::$objects[$key];
}
/**
* 注销类
* @param $key
*/
public static function _unsetObjects($key)
{
unset(self::$objects[$key]);
}
}
tp5.1/extend/A.php
<?php
class A
{
public function run()
{
return 'abc';
}
}
tp5.1\application\index\controller\Index.php
public function register()
{
$a = new \A();
\Register::setObjects('a',$a);
$res= \Register::getObjects('a')->run();
dump($res);
}
访问:
php think run
http://127.0.0.1:8000/index/index/register
string 'abc' (length=3)
了解什么是特征以及如何使用它们的最好方法是观察它们的本质