1樓:匿名使用者
為了向後相容 php 4,php 5 宣告屬性依然可以直接使用關鍵字 var來替代(或者附加於)public,protected 或 private。但是已不再需要 var 了。在 php 5.
0 到 ,var 會被認為是廢棄的,而且丟擲 e_strict 警告,但是 5.
之後就不再認為是廢棄,也不會丟擲警告。
如果直接使用 var 宣告屬性,而沒有用 public,protected或 private 之一,php 5 會將其視為 public。
檢視你的php版本是不是在php 到 , 如果是的話就會報錯。
關於 php 類成員屬性宣告和訪問的問題
2樓:團毒七七
你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將物件導向的訪問許可權控制的那部分給學習一下。
(1)類裡的變數是否一定要宣告為成員屬性,答:不一定,在一個類中,有建構函式、屬性、方法;未在方法和建構函式中宣告的變數為屬性,屬性是體現這一個類(物件)的特性的描述,他是這個類的特性的描述,這個類的狀態的改變將會隨著這些屬性值的改變而改變。如果某一變數不屬於這個類的屬性,當然可以宣告在別的地方,只要在訪問許可權內,當然也可以訪問,就像foreach($this->post as $key=>$value),$key與$value都不是類的屬性,當然不用宣告在類的屬性部分了,這裡的$key與$value便成了這個方法的區域性變數。
(2)非類的屬性,絕對不能用$this->來訪問,$this指的是當前物件,$this->所指向的是當前物件的屬性或許方法,既然不是類的屬性,當然不能用$this->來訪問了,
3樓:網友
1)類內不宣告的變數不屬於成員變數。
2)可以直接訪問變數,但在類外部訪問時,你會發現,成員變數根本就沒變化。
3)既然你使用了類,那麼你就是想在類外部訪問這些成員或方法,否則直接用函式還方便。
4樓:匿名使用者
類裡面宣告的不是變數,是類屬性。
物件裡也可以用變數,和常規變數一樣使用。
但是屬性不同,屬性只屬於類。類自身呼叫屬性就要用到$this. 被例項化的物件也可以呼叫: 物件名->屬性; 但必須保證屬性是公共的: public
建議再學習一下oo的理論基礎。
php物件導向中的成員變數必須在使用前宣告嗎?
5樓:識趣天下
你好,new connect("localhost","root","admin888","mysql","tbname");
( )內穿的是類需要的引數。
$host和$user和$pass和$db,之所以沒有宣告為類的一個屬性。
是因為,你這裡有用不上,如果用的上你可以用private 來宣告上邊的屬性,這樣才安全。
還有你問的引數傳遞問題,你再去看看類的建構函式的定義以及其在什麼時候使用你就會很明瞭。
希望你的問題能解決,望採納。
php物件導向程式設計中,成員屬性和方法的關係?
6樓:黑帝斯反擊
使用物件的哪些屬性取決於問題的領域,不是全部有關無關的屬性都需要保留,就像你所說,眼睛再漂亮,和我們要解決的問題無關就是沒有用的。以汽車的加速、減速為例,這兩個方法就需要汽車的速度屬性,而汽車的顏色、款式和加速、減速無關就不需要考慮,如果後面發現款式也是有用的話,那就以後再加上去這個屬性。
php類。。。宣告物件屬性
7樓:橾礃
要把類中所有變數都宣告一遍,一般用private封裝在類中,然後再用構造__construct()構造一遍,再寫一些方法呼叫就可以了。 追問: 全都構造一遍嗎?
如果不全都構造一遍,我不明白宣告不構造那些變數有什麼用。。。初學,很迷糊 回答: 全都構造一遍,在類中運用這些變數就不用每個方法裡面都構造一遍了。
比如,如果你沒有用__construct構造每個變數,以後你在每個方法中都要構造。很麻煩。
php物件導向中成員方法傳參問題,求解
8樓:匿名使用者
我覺得題bai主是覺得$ming->say('張三')這裡。
du可以加入引數zhi卻可以呼叫感dao到回奇怪!認為say方法被重寫應答該不能有引數的呀!(不知道是不是要解析為什麼可以再沒有引數的函式/方法中傳入引數,這裡就解析這個了)
其實你呼叫一個函式/方法,引數多於函式/方法需要的引數個數都是可以的(在這裡不講引數型別),定義的函式/方法中表明需要的引數都一定要有(除非設定一個預設值,低版本php沒有這個功能)。呼叫時多餘的引數會被忽略掉(當然也不是忽略掉,你可以通過func_get_args()函式獲取傳遞過來的所有引數,ps:用這個方法可以實現函式/方法的過載)。
9樓:大會發貨
這樣貌似不成,如果你要傳參的話,就在stu這個類中什麼都沒,然後照著你的步驟寫就成了,這樣張三這個引數就過去了。
php類中給成員屬性初始化值為什麼報錯?
10樓:庾銳藻
$var=$myvar 屬性的值不能是變數!這是最基礎的知識。
注意:成員屬性不可以是帶運算子的表示式、變數、方法或函式的呼叫。 如:
public $var3 = 1+2;
public $var4 = self::mystaticmethod();
public $var5 = myvar;
正確定義方式:
public $var6 = 100; /普通數值(4個標量:整數、浮點數、布林、字串)
public $var6 = myconstant; /常量。
public $var7 = self::classconstant; /靜態屬性。
public $var8 = array(true, false); 陣列。
11樓:匿名使用者
你把系統提示的錯誤資訊發出來吧。不然誰知道啊。不過private $var=$myvar;?>這個是你**的結束部分麼?類寫完後不是應該有「}」擴起來麼?
12樓:冷雨夜半夏輕淺
我也遇到這個問題了,這個好像是需要修改伺服器的配置,類的屬性裡面才可以有符號。
13樓:網友
這個private應該是寫在類裡面用的。
14樓:縱順歐玉石
php類中,若要初始化成員屬性,那麼成員屬性的初始值必須是一個常數,如果不是常數(如變數),則會報錯。
php物件導向,__set() 對成員屬性的值修改後,會真的改變成員屬性的值嗎?
15樓:網友
_set _unset 這一類函式,只能設定成public 如果是繼承,父類的這類函式可以是protected
這類函式的呼叫,其實和外部呼叫是一樣的,你可以在外部用 物件->_set()這樣來做的。這一特性決定了 他們不能用private 來限定,限定了,物件的外部就不能呼叫。
16樓:匿名使用者
__set 主要是用於對私有屬性的修改,如private a = 1;
當類執行完畢後,私有屬性還會恢復為以前的值。
17樓:網友
function __set 方法定義成public 測試下。
php 物件的成員屬性名稱是數字,如何才能訪問?
18樓:匿名使用者
數字也是可以訪問的,按照你這個例子來說,可以這樣:
$obj->
關於php類成員屬性宣告和訪問的問題
團毒七七 你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將物件導向的訪問許可權控制的那部分給學習一下。1 類裡的變數是否一定要宣告為成員屬性,答 不一定,在一個類中,有建構函式 屬性 方法 未在方法和建構函式中宣告的變數為屬性,屬性是體現這一個類 物件 的特性的描述,他是這個類的特性的...
php物件導向 靜態屬性為什麼能用物件訪問
static關鍵字。宣告類成員或方法為static,就可以不例項化類而直接訪問。不能通過一個物件來訪問其中的靜態成員 靜態方法除外 由於靜態方法不需要通過物件即可呼叫,所以偽變數 this在靜態方法中不可用。靜態屬性不可以由物件通過 操作符來訪問。用 方式呼叫一個非靜態方法會導致一個e strict...
php訪問物件屬性為陣列時的情況
中鏈優盟 一樣得,例如 class student private id 定義屬性,學號private name 定義屬性,姓名private teacher 定義屬性,所屬老師,array 讀取值 public function getteacher this teacher array 甲 乙 ...