nginx - php基础问题。。

WBOY
Libérer: 2016-09-08 08:43:52
original
1150 Les gens l'ont consulté

某个项目的文件

<code><?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 _auth) && $this->_role();
        $tSqlite->close();
    }</code>
Copier après la connexion
Copier après la connexion

问题一:

<code>        $lang = json_encode($lang);
        $lang = json_decode($lang);</code>
Copier après la connexion
Copier après la connexion

这两句在这里什么作用?,为什么要把$lang变成json格式后又解析成php变量?这不是多此一举么?
问题二:

<code>        $this->assign('lang' , $lang);
        $this->assign('l' , $tLang);
        $this->l = $tLang;
        $this->lang = $lang;</code>
Copier après la connexion
Copier après la connexion

这四句又怎么理解?
我的理解是assign的第一个参数是变量名,后面是它的变量值,可是

<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
Copier après la connexion
Copier après la connexion

回复内容:

某个项目的文件

<code><?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 _auth) && $this->_role();
        $tSqlite->close();
    }</code>
Copier après la connexion
Copier après la connexion

问题一:

<code>        $lang = json_encode($lang);
        $lang = json_decode($lang);</code>
Copier après la connexion
Copier après la connexion

这两句在这里什么作用?,为什么要把$lang变成json格式后又解析成php变量?这不是多此一举么?
问题二:

<code>        $this->assign('lang' , $lang);
        $this->assign('l' , $tLang);
        $this->l = $tLang;
        $this->lang = $lang;</code>
Copier après la connexion
Copier après la connexion

这四句又怎么理解?
我的理解是assign的第一个参数是变量名,后面是它的变量值,可是

<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
Copier après la connexion
Copier après la connexion

先不说代码写的怎么样..

第一个问题, 就是把数组转换成对象.

第二个问题, assign是注册模板变量, 在view里面可以直接使用$lang. 所以是不一样的

问题一:这里$lang的变量不知道哪里来的。。。。不过这种json_encode()json_decode()连写是可以做数据类型转换的。如果最初$lang是一个array,执行完这两句就转换为object。

问题二:我也不是很清楚。。

问题一:将$lang变量转化为object(对象).$lang多半是include引入的。在模板引擎中,数组跟对象的格式是不一样的。可能是作者用的顺手,所以就转了。
问题二:是将$lang和$tLang传递到页面上方便页面调用。而用了$this->l和$this->lang是将其保存在当前类中方便自身调用或者在外调用。而当我们每次new出该类时,该类会传递两个变量到页面,同时并将变量值赋值给当前类的属性。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!