class indexControl extends BaseHomeControl{
public function indexOp(){
Language::read('home_index_index');
$test = Tpl::output('index_sign','index');
                var_dump($test);//打印出NULL

上面代码中Tpl::output('index_sign','index');是肯定有值的,但是怪了为啥打印出NULL呢/**
 * 抛出变量
 *
 * @param mixed $output
 * @param  void
 */
public static function output($output,$input=''){
self::getInstance();

self::$output_value[$output] = $input;
}

解决方案 »

  1.   

        public static function output($output,$input=''){
            self::getInstance(); //获取一个实例,但这里应该没有意义,因为没有承接返回值
             
            self::$output_value[$output] = $input; //把传入的数据保存起来
        }
    output 并没有 return 语句,所以他不会含有返回值
    因此
    $test = Tpl::output('index_sign','index');
    var_dump($test);//打印出NULL
      

  2.   

    可是在实际应用中self::getInstance(); 和self::$output_value[$output] = $input;确实起作用,比如我把这两句话去掉或去掉其中的一句话,整个框架就不运行了!
      

  3.   

    self::getInstance() 我只所说是对 output 应该没意义,如果他里面还做了什么,没有代码,不得而知
    self::$output_value[$output] = $input; 当然是有意义的,但这只是赋值。要在其他地方才用到 self::$output_value 的值同一将 function 翻译成 函数 是不妥当的,函数都要有返回值,而这里并没有
    这里的 function 是其本意:功能。在类中一般译为 方法,而 方法 可以有返回值,也可以没有