CI3中Controller.php控制器的self::KaTeX parse error: Expected 'EOF', got '&' at position 10: instance=&̲this调用及Model.php中的__get($key)的测试
Controller.php文件
<?php
class CI_Controller{
private static $instance;
public function __construct(){
self::$instance=&$this;
foreach(is_loaded() as $var=>$class)
{
$this->$var=&load_class($class);
$obj=$this->$var;
printf("var: |%s|,class: |%s|,obj: |%s|<br/>",$var,$class,var_export($obj,true));
}
}
public static function &get_instance()
{
return self::$instance;
}
public function get()
{
require_once 'model.php';
$model=new CI_Model();
$str=$model->invoteClass();
return $str;
}
}
Common.php
<?php
if(!function_exists('load_class'))
{
function &load_class($class)
{
static $_classes=array();
if(isset($_classes[$class]))
{
return $_classes[$class];
}
if(file_exists($class.'.php'))
{
require($class.'.php');
}
is_loaded($class);
$_classes[$class]=new $class();
return $_classes[$class];
}
}
if(!function_exists('is_loaded'))
{
function &is_loaded($class='')
{
static $_is_loaded=array();
if($class!='')
{
$_is_loaded[strtolower($class)]=$class;
}
return $_is_loaded;
}
}
function &get_instance()
{
return CI_Controller::get_instance();
}
Model.php
<?php
class CI_Model
{
public function __construct()
{}
public function __get($key)
{
$CI=&get_instance();
printf('显示加载的是那个方法:|%s|<br/>',__METHOD__);
return $CI->$key;
}
public function invoteClass()
{
$obj=$this->appa;
echo '显示方法:'.__METHOD__."<br/>";
printf("调用的对象是:|%s|<br/>",var_export($obj,true));
printf("obj->getApp: |%s|<br/>",$obj->getApp());
/*
$obj=$this->appb;
echo '显示方法:'.__METHOD__."<br/>";
printf("调用的对象是:|%s|<br/>",var_export($obj,true));
printf("obj->getApp: |%s|<br/>",$obj->getApp());
*/
}
}
?>
appa.php
<?php
class appA{
public function __construct(){}
public function getApp()
{
return 'this is appa';
}
}
index.php
<?php
include 'Common.php';
include 'Controller.php';
load_class('appa');
$controller=new CI_Controller();
echo '显示文件路径:'.__FILE__."<br />";
$controller->get();