關於php類成員屬性宣告和訪問的問題

時間 2021-09-04 02:37:24

1樓:團毒七七

你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將物件導向的訪問許可權控制的那部分給學習一下。

(1)類裡的變數是否一定要宣告為成員屬性,答:不一定,在一個類中,有建構函式、屬性、方法;未在方法和建構函式中宣告的變數為屬性,屬性是體現這一個類(物件)的特性的描述,他是這個類的特性的描述,這個類的狀態的改變將會隨著這些屬性值的改變而改變。如果某一變數不屬於這個類的屬性,當然可以宣告在別的地方,只要在訪問許可權內,當然也可以訪問,就像foreach($this->post as $key=>$value),$key與$value都不是類的屬性,當然不用宣告在類的屬性部分了,這裡的$key與$value便成了這個方法的區域性變數。

(2)非類的屬性,絕對不能用$this->來訪問,$this指的是當前物件,$this->所指向的是當前物件的屬性或許方法,既然不是類的屬性,當然不能用$this->來訪問了,

2樓:

逐個回答你的問題吧 。

1)類內不宣告的變數不屬於成員變數

2)可以直接訪問變數,但在類外部訪問時,你會發現,成員變數根本就沒變化。

3)既然你使用了類,那麼你就是想在類外部訪問這些成員或方法,否則直接用函式還方便。

3樓:匿名使用者

類裡面宣告的不是變數,是類屬性.

物件裡也可以用變數,和常規變數一樣使用.

但是屬性不同,屬性只屬於類.類自身呼叫屬性就要用到$this. 被例項化的物件也可以呼叫: 物件名->屬性; 但必須保證屬性是公共的: public

建議再學習一下oo的理論基礎.

php 物件導向中成員屬性的宣告

4樓:匿名使用者

為了向後相容 php 4,php 5 宣告屬性依然可以直接使用關鍵字 var來替代(或者附加於)public,protected 或 private。但是已不再需要 var 了。在 php 5.

0 到 5.1.3,var 會被認為是廢棄的,而且丟擲 e_strict 警告,但是 5.

1.3 之後就不再認為是廢棄,也不會丟擲警告。

如果直接使用 var 宣告屬性,而沒有用 public,protected或 private 之一,php 5 會將其視為 public。

檢視你的php版本是不是在php 5.0 到 5.1.3, 如果是的話就會報錯。

php物件導向中對屬性和方法定義的問題

5樓:匿名使用者

對屬bai性或方法的訪問控制,是du通過zhi在前面新增關鍵字dao public、protected 或 private 來實現的。由 public 所定回義的類成員可以在任答何地方被訪問;由 protected 所定義的類成員則可以被其所在類的子類和父類訪問(當然,該成員所在的類也可以訪問);而由 private 定義的類成員則只能被其所在類訪問。

php類定義了屬性,類中的方法要使用預設值怎麼辦?

6樓:風吹裙jj涼

每個方法都必須要定義的引數就可以直接定義個類屬性了,如果不變的話可以直接public $arg='***';

如果隨著場景不同這個值可能會發生變化,就把賦值放到構造方法裡public function __construct($aa)$obj = new exp($aa);

下面的方法就不用傳引數了,直接呼叫$this->arg就可以了再如果每次呼叫不通的方法,變數arg都不同,就不要定義屬性了,直接給方法傳值就可以了。

7樓:匿名使用者

類外給成員屬性賦值:$obj->arg = $arg;

初始化時候進行賦值:

__construct($arg='')

類中其他成員方法通過$this->arg都可以呼叫。

在php中如何設定類的屬性如何呼叫類的方法

php訪問類的屬性 方法使用箭頭語法 這裡我給你乙個例子供你參考 class myclass protected function my method2 obj new myclass 例項化 obj name noname 設定name屬性 obj age 12 這是錯誤的,不能設定保護屬性 ob...

Php類和函式有什麼差別,php中變數和函式的區別

樓主得去多瞭解一下物件導向。舉個例子給你聽吧比如你要做個電子商務 那肯定會有購物車功能。那我們先建立一個購物車的類,購物車class,那光一個類沒什麼用啊。那我們要建立很多方法和變數,比如商品加入購物車function,修改數量function,取消已經新增商品function。這樣一個購物車的類就...

php,子類無法訪問父類私有屬性,子類例項化再賦值後,子類所新增的新成員屬性不存在

這兩句沒問題 student1 dance student1 say 問題出在這三句 student1 name zhangsan student1 age 20 student1 gender male 這三個都是私有成員,不能直接賦值,可以在基類中實現公共的set方法或者建構函式來賦值。 隋龍飛...