특정 프로젝트의 파일
<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>
질문 1:
<code> $lang = json_encode($lang); $lang = json_decode($lang);</code>
여기서 이 두 문장은 무엇을 의미하나요? , $lang을 json 형식으로 변환한 다음 PHP 변수로 구문 분석해야 하는 이유는 무엇입니까? 이건 불필요하지 않은가?
질문 2:
<code> $this->assign('lang' , $lang); $this->assign('l' , $tLang); $this->l = $tLang; $this->lang = $lang;</code>
이 네 문장을 어떻게 이해하시나요?
내가 이해한 바에 따르면 할당의 첫 번째 매개변수는 변수 이름이고 그 뒤에 변수 값이 옵니다. 그러나
<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
특정 프로젝트의 파일
<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>
질문 1:
<code> $lang = json_encode($lang); $lang = json_decode($lang);</code>
여기서 이 두 문장은 무엇을 의미하나요? , $lang을 json 형식으로 변환한 다음 PHP 변수로 구문 분석해야 하는 이유는 무엇입니까? 이건 불필요하지 않은가?
질문 2:
<code> $this->assign('lang' , $lang); $this->assign('l' , $tLang); $this->l = $tLang; $this->lang = $lang;</code>
이 네 문장을 어떻게 이해하시나요?
내가 이해한 바에 따르면 할당의 첫 번째 매개변수는 변수 이름이고 그 뒤에 변수 값이 옵니다. 그러나
<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
코드가 어떻게 작성되는지 이야기하지 말자..
첫 번째 문제는 배열을 객체로 변환하는 것입니다.
두 번째 질문인 할당은 등록된 템플릿 변수로, 뷰에서 직접 사용할 수 있습니다$lang
. 그래서 다릅니다
질문 1: 여기 변수 $lang
가 어디서 왔는지 모르겠습니다. . . . 그러나 이러한 json_encode()
및 json_decode()
연결을 데이터 유형 변환에 사용할 수 있습니다. 처음에 $lang
이 배열인 경우 이 두 문장을 실행한 후 객체로 변환됩니다.
질문 2: 저도 잘 모르겠습니다. .
질문 1: $lang 변수를 객체로 변환합니다. $lang은 대부분 include로 도입됩니다. 템플릿 엔진에서는 배열과 객체의 형식이 다릅니다. 아마도 작성자가 사용하기 쉽다고 생각해서 옮겨놓은 것 같습니다.
질문 2: 페이지 호출을 용이하게 하려면 $lang 및 $tLang을 페이지에 전달하세요. $this->l 및 $this->lang을 사용하는 것은 자체적으로 또는 외부에서 쉽게 호출할 수 있도록 현재 클래스에 저장하는 것입니다. 그리고 새 클래스를 만들 때마다 클래스는 두 개의 변수를 페이지에 전달하고 변수 값을 현재 클래스의 속성에 할당합니다.