某个项目的文件
<?php
/**
* 基础类
*/
abstract class Ctrl_Base extends Yaf_Controller_Abstract{
/**
* 开启 SESSION : 1
* 必须登录 : 2
* 必须管理员 : 4
*/
protected $_auth = 0;
/**
* 当前登录用户
* @var array
*/
public $mCurUser = array();
public $l;
public $lang;
/**
* 构造函数
*/
public function init(){
$tSqlite = $this->sqlite();
$tLCount = $tSqlite->getRow("SELECT COUNT(0) c FROM sqlite_master where type='table' and name='lang'");
$tLang = array();
if(!empty($tLCount['c'])){$tLang = $tSqlite->getRow($tSql = 'select * from lang');}
$tLang = empty($tLang['lang'])?'cn':$tLang['lang'];
include realpath(dirname(__FILE__).'../../../lang/'.$tLang.'/common.php');
$lang = json_encode($lang);
$lang = json_decode($lang);
$this->assign('lang' , $lang);
$this->assign('l' , $tLang);
$this->l = $tLang;
$this->lang = $lang;
//(1 & $this->_auth) && $this->_session();
//(1 < $this->_auth) && $this->_role();
$tSqlite->close();
}
问题一:
$lang = json_encode($lang);
$lang = json_decode($lang);
这两句在这里什么作用?,为什么要把$lang变成json格式后又解析成php变量?这不是多此一举么?
问题二:
$this->assign('lang' , $lang);
$this->assign('l' , $tLang);
$this->l = $tLang;
$this->lang = $lang;
这四句又怎么理解?
我的理解是assign的第一个参数是变量名,后面是它的变量值,可是
`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?
先不说代码写的怎么样..
第一个问题, 就是把数组转换成对象.
第二个问题, assign是注册模板变量, 在view里面可以直接使用
$lang
. 所以是不一样的