天天看點

php 類 私有變量指派,ThinkPHP遇到的類私有變量指派問題

Home\Common\Map.class.php檔案

namespace Home\Common;

class Map {

static function getName() {

$map = array(

'0' => '張三',

'1' => '李四',

'2' => '王五',

'3' => '趙六'

);

return $map;

}

}

Home\Controller\IndexController.class.php檔案

namespace Home\Controller;

use Think\Controller;

use Home\Common\Map as map;

class IndexController extends Controller {

private $sex = array(0,1);

private $name = map::getName();  // 寫法1

// 測試 靜态函數 類私有變量指派

public function getName() {

$name = map::getName();        // 寫法2

var_dump($name);

}

}

其中,寫法1出錯,顯示:

php 類 私有變量指派,ThinkPHP遇到的類私有變量指派問題

寫法2顯示:

php 類 私有變量指派,ThinkPHP遇到的類私有變量指派問題

如果想私有變量指派,可以構造函數指派,即在__construct()裡指派:

$this->name = map::getName();    // 注意千萬别寫成$this->$name

類的變量成員叫做“屬性”,或者叫“字段”、“特征”。屬性聲明是由關鍵字 public,protected 或者 private 開頭,然後跟一個普通的變量聲明來組成。屬性中的變量可以初始化,但是初始化的值必須是常數,這裡的常數是指 PHP 腳本在編譯階段時就可以得到其值,而不依賴于運作時的資訊才能求值。

在類的成員方法裡面,可以用 ->(對象運算符):$this->property(其中 property 是該屬性名)這種方式來通路非靜态屬性。靜态屬性則是用::(雙冒号):self::$property 來通路。

當一個方法在類定義内部被調用時,有一個可用的僞變量 $this。$this 是一個到主叫對象的引用(通常是該方法所從屬的對象,但如果是從第二個對象靜态調用時也可能是另一個對象)。

具體請參考:http://php.net/manual/zh/language.oop5.properties.php