Home  >  Article  >  Backend Development  >  一个让人能绕晕的逻辑

一个让人能绕晕的逻辑

WBOY
WBOYOriginal
2016-06-23 13:33:261477browse

为了便于说明,我用不同的颜色自然段说明吧
这是一个关于定义数组的问题
是在一个框架中,首先在类中定义了一个整合数组的方法

/**
 * 输出模板内容的数组,其他的变量不允许从程序中直接输出到模板
 */
private static $output_value = array();
public static function output($output,$input=''){
self::getInstance();

self::$output_value[$output] = $input;
}
在实际应用中,在一个文件里,这样写的
//板块信息
$model_web_config = Model('web_config');
$web_html = $model_web_config->getWebHtml('index');
Tpl::output('web_html',$web_html);
接着在模板中这里写的

好我的问题来了:
通过上面一系列的计算获得了数组库中的数据,并把数据放在数组里了。此时在模板中的写法首先要知道这个数组叫啥名,然后通过下标配合就能获得数组中的对应值 了,这时我的疑问来了,这里为啥数组名叫$output呢?
这个名是随便起还是说有上下文的约定呢,我看了一下上文,没有这个名字的定义呢,就突然出现,所以让人目瞪口呆!何解?


我目前的理解:也许有人会说是这句Tpl::output('web_html',$web_html);话中的output说明了,我认为不是,因为这里它是一个方法名,而不是数组名!按说上面已经定义了/**
 * 输出模板内容的数组,其他的变量不允许从程序中直接输出到模板
 */
private static $output_value = array();,为啥这里不用$output_value做数组名,而是用$output来做数组名呢,


回复讨论(解决方案)

可能是在 Tpl::output 的函数里面定义了  $output 这个数组

看看你一直的提问,发现你并非初学者(有时问题的水平很高)
那么你怎么就不知道函数(方法)定义时的形式参数呢?
public static function output( $output, $input=''){
  self::getInstance();
  self::$output_value[ $output] =  $input;
}
output 方法的两个传入参数,你总得给他个名字吧?不然怎么知道谁是谁
总不能第一个参数、第二个参数这样叫吧

执行 Tpl::output('web_html',$web_html); 时
'web_html' 就对应 参数 $output 
$web_html就对应 参数 $input 

可能是output方法中定义了

$web_html = array('index'=>'xxx');output('web_html',$web_html);function output($key, $value){	global $output;	$output[$key] = $value;	return $output;}echo $output['web_html']['index'];

可能其他地方赋值了,比如:$output = $output_value;
具体要看完整的类如何写的

可能是在 Tpl::output 的函数里面定义了  $output 这个数组


我一提醒,确实里面有
//对模板变量进行赋值
$output = self::$output_value;

看看你一直的提问,发现你并非初学者(有时问题的水平很高)
那么你怎么就不知道函数(方法)定义时的形式参数呢?
public static function output( $output, $input=''){
  self::getInstance();
  self::$output_value[ $output] =  $input;
}
output 方法的两个传入参数,你总得给他个名字吧?不然怎么知道谁是谁
总不能第一个参数、第二个参数这样叫吧

执行 Tpl::output('web_html',$web_html); 时
'web_html' 就对应 参数 $output 
$web_html就对应 参数 $input 


你没有看明白我在问啥,跑题了
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn