目錄
回覆內容:
首頁 後端開發 php教程 nginx - php基礎問題。 。

nginx - php基礎問題。 。

Sep 08, 2016 am 08:43 AM
nginx php

某個項目的文件

<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>
登入後複製
登入後複製

問題一:

<code>        $lang = json_encode($lang);
        $lang = json_decode($lang);</code>
登入後複製
登入後複製

這兩句在這裡什麼作用? ,為什麼要把$lang變成json格式後又解析成php變數?這不是多此一舉麼?
問題二:

<code>        $this->assign('lang' , $lang);
        $this->assign('l' , $tLang);
        $this->l = $tLang;
        $this->lang = $lang;</code>
登入後複製
登入後複製

這四句又怎麼理解?
我的理解是assign的第一個參數是變數名,後面是它的變數值,可是

<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>
登入後複製
登入後複製

問題一:

<code>        $lang = json_encode($lang);
        $lang = json_decode($lang);</code>
登入後複製
登入後複製

這兩句在這裡什麼作用? ,為什麼要把$lang變成json格式後又解析成php變數?這不是多此一舉麼?
問題二:

<code>        $this->assign('lang' , $lang);
        $this->assign('l' , $tLang);
        $this->l = $tLang;
        $this->lang = $lang;</code>
登入後複製
登入後複製

這四句又怎麼理解?
我的理解是assign的第一個參數是變數名,後面是它的變數值,可是

<code>`$this->l = $tLang;`不就是将`$tLang`赋值给`$this`的`l`属性么?这四句不就重复了么?</code>
登入後複製
登入後複製

先不說程式碼寫的怎麼樣..

第一個問題, 就是把陣列轉換成物件.

第二個問題, assign是註冊模板變數, 在view裡面可以直接使用$lang. 所以是不一樣的

問題一:這裡$lang的變數不知道哪裡來的。 。 。 。不過這種json_encode()json_decode()連寫是可以做資料型別轉換的。如果最初$lang是一個array,執行完這兩句就轉換為object。

問題二:我也不是很清楚。 。

問題一:將$lang變數轉換為object(物件).$lang多半是include引入的。在模板引擎中,數組跟物件的格式是不一樣的。可能是作者用的順手,所以就轉了。
問題二:是將$lang和$tLang傳遞到頁面上方便頁面呼叫。而用了$this->l和$this->lang是將其保存在當前類別中方便自身呼叫或在外調用。而當我們每次new出該類別時,該類別會傳遞兩個變數到頁面,同時並將變數值賦值給目前類別的屬性。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP的目的:構建動態網站 PHP的目的:構建動態網站 Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

PHP:處理數據庫和服務器端邏輯 PHP:處理數據庫和服務器端邏輯 Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

See all articles