nginx - php基础问题。。
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 _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`属性么?这四句不就重复了么?
回复内容:
某个项目的文件
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 _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
. 所以是不一样的
问题一:这里$lang
的变量不知道哪里来的。。。。不过这种json_encode()
,json_decode()
连写是可以做数据类型转换的。如果最初$lang
是一个array,执行完这两句就转换为object。
问题二:我也不是很清楚。。
问题一:将$lang变量转化为object(对象).$lang多半是include引入的。在模板引擎中,数组跟对象的格式是不一样的。可能是作者用的顺手,所以就转了。
问题二:是将$lang和$tLang传递到页面上方便页面调用。而用了$this->l和$this->lang是将其保存在当前类中方便自身调用或者在外调用。而当我们每次new出该类时,该类会传递两个变量到页面,同时并将变量值赋值给当前类的属性。
下一篇: 关于smarty模版的有关问题
推荐阅读
-
php cli配置文件问题分析
-
nginx比apache处理静态文件速度快,但是nginx处理大量并发的php请求时,容易出现502错误,频率大概是多少
-
PHP解决URL中文GBK乱码问题的两种方法
-
php导入csv文件碰到乱码问题的解决方法
-
PHP连接Nginx服务器并解析Nginx日志的方法
-
nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
-
nginx php-fpm环境中chroot功能的配置使用方法
-
nginx:413 Request Entity Too Large的处理办法--修改 PHP上传文件大小
-
不要轻信 PHP_SELF的安全问题
-
CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1多版本全能环境