Dateien eines bestimmten Projekts
<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 < $this->_auth) && $this->_role(); $tSqlite->close(); }</code>
Frage 1:
<code> $lang = json_encode($lang); $lang = json_decode($lang);</code>
Was bedeuten diese beiden Sätze hier? , warum sollte $lang in das JSON-Format konvertiert und dann in PHP-Variablen analysiert werden? Ist das nicht unnötig?
Frage 2:
<code> $this->assign('lang' , $lang); $this->assign('l' , $tLang); $this->l = $tLang; $this->lang = $lang;</code>
Wie verstehen Sie diese vier Sätze?
Mein Verständnis ist, dass der erste Parameter von „assign“ der Variablenname ist, gefolgt von seinem Variablenwert, aber
<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
Dateien eines bestimmten Projekts
<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 < $this->_auth) && $this->_role(); $tSqlite->close(); }</code>
Frage 1:
<code> $lang = json_encode($lang); $lang = json_decode($lang);</code>
Was bedeuten diese beiden Sätze hier? , warum sollte $lang in das JSON-Format konvertiert und dann in PHP-Variablen analysiert werden? Ist das nicht unnötig?
Frage 2:
<code> $this->assign('lang' , $lang); $this->assign('l' , $tLang); $this->l = $tLang; $this->lang = $lang;</code>
Wie verstehen Sie diese vier Sätze?
Mein Verständnis ist, dass der erste Parameter von „assign“ der Variablenname ist, gefolgt von seinem Variablenwert, aber
<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
Reden wir nicht darüber, wie der Code geschrieben ist.
Das erste Problem besteht darin, das Array in ein Objekt umzuwandeln.
Bei der zweiten Frage handelt es sich um die Zuweisung einer registrierten Vorlagenvariablen, die direkt in der Ansicht verwendet werden kann$lang
Es ist also anders
Frage 1: Ich weiß nicht, woher die Variable $lang
hier kommt. . . . Diese Art der json_encode()
- und json_decode()
-Verkettung kann jedoch zur Datentypkonvertierung verwendet werden. Wenn $lang
ursprünglich ein Array ist, wird es nach der Ausführung dieser beiden Sätze in ein Objekt umgewandelt.
Frage 2: Ich bin auch nicht ganz klar. .
Frage 1: $lang-Variable in Objekt konvertieren wird meist durch include eingeführt. In der Template-Engine sind die Formate von Arrays und Objekten unterschiedlich. Vielleicht fand der Autor es einfach zu verwenden, also hat er es übertragen.
Frage 2: Übergeben Sie $lang und $tLang an die Seite, um Seitenaufrufe zu erleichtern. Die Verwendung von $this->l und $this->lang besteht darin, sie in der aktuellen Klasse zu speichern, um sie einfach selbst oder außerhalb aufrufen zu können. Und jedes Mal, wenn wir eine neue Klasse erstellen, übergibt die Klasse zwei Variablen an die Seite und weist die Variablenwerte den Eigenschaften der aktuellen Klasse zu.