A. php 對象的成員屬性名稱是數字,如何才能訪問
數字也是可以訪問的,按照你這個例子來說,可以這樣:
$obj->{0}
B. php 對對象的屬性怎麼操作
用箭頭操作
classAction{
private$name=null;
functiongetName(){
return$this->name;
}
functionsetName($name){
$this->name=$name;
}
}
C. php中的類、對象、屬性、方法,能不能這樣理解
你的理解是對的。類就是指猛純毀一類人、事、物。對象就是類裡面具體都某個個體,所以褲遲稱枝備為實例化一個對象。屬性就是這個對象所擁有的特性,方法就是該對象能夠做的事。所以你的理解是正確的。
D. php 的public作用
從PHP5.0版本開始,對象聲明時需要聲明對象屬性和方法的可見性,public關鍵字表示屬性或方法是公開可見的。
在PHP5.0之前未支持對象屬性和方法的可見性定義,默認所有的屬性和方法都是公開可見的,如以下的對象聲明:
//例1
classObj{
var$name='Obj';
functiongetName(){
return$this->name;
}
}
而PHP5開始推薦寫法為:
//例2
classObj{
protected$name='Obj';
publicfunctiongetName(){
return$this->name;
}
}
對於例1來說,實際上可以直接訪問name屬性,從而繞過getName方法,如
$obj=newObj();
echo$obj->name;
而對於例2來說,由於$name屬性是protected(受保護的),因此必須使用getName方法才能得到$name屬性的值。
同時這也是面向對象語言通用的一種聲明方式。
public: 公開可見
protected: 對象內部可見 (該對象的子對象同樣可以訪問)
private: 對象自身內部可見 (不包含該對象的子對象,或者說private屬性和方法不會被繼承)
E. PHP中面向對象的類中,屬性都允許哪些數據類型
對屬性或方法的訪問控制,是通過在前面添加關鍵字 public、protected 或 private 來實現的。由 public 所定義的類成員可以在任何地方被訪問;由 protected 所定義的類成員則可以被其所在類的子類和父類訪問(當然,該成員所在的類也可以訪問);而由 private 定義的類成員則只能被其所在類訪問。
F. PHP數組中可否存放對象如果可以,那麼在smarty的模板中應當如何獲取對象的屬性值
PHP的數組是支持保存對象的實例的,然後你的錯誤提示中也能看出是用了數組的方式來訪問了一個對象。
建議你不要用對象的形式,而全部都用數組。可以用json函數來轉換
$user_array=json_decode(json_encode($user_array),true);
這樣一來$user_array裡面就全部都是數組,其中原先對象的部分被一個包含了其所有成員屬性的數組替代。
G. php訪問對象
$data = $m_request_data->data; #訪問對象
這一句要注意了。你這里只是臨時定義個變數。要想在類中全部能用它,
class A{
可以在類中先聲明它
private $data;
或者定義一個靜態方法
public static $data;
然後構造方法最後一句變為
public function __construct() {
…………
$this->data= $m_request_data->data; #訪問對象
//靜態方法是self::data = $m_request_data->data;
}
好了這里
function data(){
print_r($this->data);//直接用,列印還是取值$this->data->value();隨你~~
//靜態的是print_r(self::data);
}
H. 說說php面向對象編程時static,public,private,protected 各有什麼意義
staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序
I. php對象訪問不存在的類屬性
使用get()和set()而不使用public的成員變數,是因為我們設計類的時候要遵循這樣的原則:
提供類的人要盡量將類中有什麼隱藏起來,只告訴使用者你能做什麼
使用類的人不關心你的類中有什麼,只關心類提供了什麼功能
所以設計類的時候要盡量不提供public的成員變數,最好一個都沒有,只提供介面
這條原則其實不僅是代碼規范的問題,放到工作中,這就是多項目組或多部門之間合作的准則
這條原則也絕對不是某個獨自編碼的程序狼一拍腦袋就想出來,這是經歷過有組織開發過工作的程序猿才能設計出來的。
————————————————————————————————————————————————————————————
這個問題其實很簡單,比如
setAge(int age){
if(age<1||age>120)
throw new Exception(" 你輸入的年齡不合法");
}else{
this.age=age;
}
這個是public變數做不到的,安全是其中一個原因,另外樓主你要是學過Hiberante和Spring的話,就會知道
一些類的變數,即使是public的,也必須寫上set方法,否則就出錯,框架設計的時候就這么要求的
所以別人都這么做的時候,你這么做只會有好處而不會有壞處,這就是標准
J. php怎麼訪問對象中的private
私有屬性方法在對象外不能訪問,在對象內可以蔽塌訪問,那麼你可以寫一個共有public的方法,在方法里對對象里巧殲的私有屬性宏寬圓方法採取調用就可以了。所謂私有就是避免對象外的亂改,加個方法起限制