php類屬性
① php類的成員屬性
一個好的編程習慣是所有變數都定義,「可以不定義」並不是你不定義的理由。如果有可能,最好能把沒有定義的變數都當作編譯錯誤報告,這樣可以避免寫錯變數名。如果PHP不檢查這個,說明語法檢查不嚴謹
② PHP中類的屬性在類中調用只必須使用$this嗎
在 sd()里使用變數a只能用$this->a嗎?
是的
類中的echo $b;為什麼會報錯呢?
類中只能有成員變數和成員函數, 這不是變數也不是函數,這是一個執行語句,所以當然會報錯。
③ php 中類的屬性可以調用方法嗎,怎麼調用
你大概是想通過調用類中的某個方法,來動態改變類的屬性的值吧。這樣其實沒有「屬性調用方法」這種說法,你在類中單獨寫個方法,或者析構函數,自動調用類中的某個方法來給該類的屬性賦值是可以的。
④ php中類的屬性可以是對象嗎定義成對象後可以再給這個對象添加方法嗎最好舉個例子,
類的屬性可以直接使用,沒什麼是不是對像。
新手學習的OOP有點不可想像。
你可記住此例子。
<?php
class Person
{
public $name = "NoName"; //定義public屬性$name
public $age = 20; //定義public屬性$age
}
$p = new Person(); //創建對象
echo " " . $p->name; //輸出對象$p的屬性$name
echo "<br />";
echo " " . $p->age; //輸出$age屬性
?>
⑤ PHP 中的 對象 類 屬性 實例化 到底是怎麼理解的啊·
我的理解
說一個人養了一隻小狗(定義一個對象),把狗牽過來,擺在面前,讓它確實存在(實例化)。
類,就是類別。人是一類,狗是一類。
屬性就是人的特點,長頭發、白皮膚、黑眼珠。
方法就是人會唱歌、會說話、會跑步跳躍等各種行為。
對象,就是類裡面的一個個體。人類中的每一個人都是一個對象
⑥ 關於 php 類成員屬性聲明和訪問的問題
你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將面向對象的訪問許可權控制的那部分給學習一下。
(1)類里的變數是否一定要聲明為成員屬性,
答:不一定,在一個類中,有構造函數、屬性、方法;未在方法和構造函數中聲明的變數為屬性,屬性是體現這一個類(對象)的特性的描述,他是這個類的特性的描述,這個類的狀態的改變將會隨著這些屬性值的改變而改變。如果某一變數不屬於這個類的屬性,當然可以聲明在別的地方,只要在訪問許可權內,當然也可以訪問,就像foreach($this->post as $key=>$value),$key與$value都不是類的屬性,當然不用聲明在類的屬性部分了,這里的$key與$value便成了這個方法的局部變數。
(2)非類的屬性,絕對不能用$this->來訪問,$this指的是當前對象,$this->所指向的是當前對象的屬性或許方法,既然不是類的屬性,當然不能用$this->來訪問了,
⑦ PHP中如何定義類及其成員屬性與操作
實測
php中,在類里邊可以定義屬性
class
a
{
public
$name;
public
$type;
}
在類中不能定義屬性,但是可以定義變數,並將其賦給他所在類的屬性
class
a
{
public
$name;
function
b(){
$othername
=
1;
$this->name
=
$othername;
}
}
$a
=
new
a();
$a->b();
echo
$a->name;
最後,祝新年快樂
⑧ PHP中,一個類的屬性怎樣定義為另一個類
當你聲明一個類,你需要列出對象應有的所有變數和所有函數?被稱為屬性和方法圖1中顯示了一個類的構成. 注意在大括弧({})內你只能聲明變數或者函數. 圖2中顯示了如何在一個類中定義三個屬性和兩個方法.
以下為引用的內容:
class Name extends Another Class
{
Access Variable Declaration
Access Function Declaration
}
name = $name;
$this->password = $password;
$this->lastLogin = time();
$this->accesses++;
}
// 獲取最後訪問的時間
function getLastLogin()
{
return(date("M d Y", $this->lastLogin));
}
}
//創建一個對象的實例
$user = new User("Leon", "sdf123");
//獲取最後訪問的時間
print($user->getLastLogin() ."\n");
//列印用戶名
print("$user->name\n");
?>
當你聲明屬性,你不需要指明數據類型. 變數可能是整型,字元串或者是另一個對象,這取決於實際情況.在聲明屬性時增加註釋是一個好主意,標記上屬性的含義和數據類型.
當你聲明一個方法,你所做的和在類外部定義一個函數是一樣的. 方法和屬性都有各自的命名空間. 這意味著你可以安全地建立一個與類外部函數同名的方法,兩者不會沖突. 例如,一個類中可以定義一個名為date()的方法. 但是你不能將一個方法命名為PHP的關鍵字,如for或者while.
類方法可能包含PHP中所謂的type hint. Type hint 是另一個傳遞參數給方法的類的名字. 如果你的腳本調用方法並傳遞一個不是類的實例的變數,PHP將產生一個」致命(fatal)錯誤」 . 你可能沒有給其它類型給出type hint,就像整型,字元串,或者布爾值. 在書寫的時候, type hint是否應當包含數組類型仍存在爭議.
Type hint是測試函數參數或者運算符的實例的數據類型的捷徑. 你可能總是返回這個方法. 確認你強制讓一個參數必須是哪種數據類型,如整型. 圖3 確保編譯類只產生Widget的實例
以下為引用的內容:
<?php
//組件
class Widget
{
public $name='none';
public $created=FALSE;
}
//裝配器
class Assembler
{
public function make(Widget $w)
{
print("Making $w->name\n");
$w->created=TRUE;
}
}
//建立一個組件對象
$thing = new Widget;
$thing->name = 'Gadget';
//裝配組件
Assembler::make($thing);
?>
除了傳遞參數的變數外,方法含有一個特殊的變數. 它代表類的個別實例. 你應當用這個來指向對象的屬性和其它方法.一些面向對象的語言假設一個不合格的變數提交給本地屬性,但在PHP中方法的任何變數只是在方法的一定范圍內. 注意在User類的構造函數中這個變數的使用
⑨ php類里,某個方法的參數,沒有定義成類的屬性,那這個方法的參數是以哪種形態存在的 默認成了類的屬性嗎
1、這個$a和$b是類中函數add的形式參數,離開里函數就不能使用了。因為形參變數只有在函數被調用時分配內存。調用結束了就立刻釋放了內存。
而類的屬性,只要是在類的范圍內各個方法都可以調用。比如
<?php
class Match{
public $c = 2;
public function add($a,$b){
return $this->c;
}
public function get_c(){
return $this->c;
}
}
類屬性$c可以在add和get_c兩個方法都能調用,所以你說「方法參數默認為了類的屬性」是不正確的。
2、方法的參數不用定義成對象的屬性(是「類的屬性」吧?)。根據第一點,函數的形參和類屬性沒關系。
⑩ 在php中如何設置類的屬性,如何調用類的方法
PHP訪問類的屬性、方法使用箭頭語法(->)。這里我給你一個例子供你參考:
<?php
classMyClass{//定義MyClass類
public$name;//定義了一個公有屬性
protected$_age;//定義了一個保護屬性
private$_email;//定義了一個私有屬性
publicfunctionmy_method(){//定義my_method方法
}
protectedfunction_my_method2(){//定義_my_method2方法
}
}
$obj=newMyClass;//實例化
$obj->name='noname';//設置name屬性
$obj->_age=12;//這是錯誤的,不能設置保護屬性
$obj->address='KingStreet.'//設置一個未聲明的屬性是允許的,效果和公有屬性類似,但未賦值前不能使用。
$obj->my_method()//調用公有方法
$obj->_my_method2();//這是錯誤的,不能調用保護方法
你需要理解繼承、公有、保護和私有的概念。
繼承:子類繼承父類的公有、保護屬性和方法。
公有:類的實例可以訪問的屬性和方法。
保護:只能在類的內部及其子類內部訪問的屬性和方法。
私有:只能在類的內部訪問的屬性和方法。
這是個很基礎的問題,建議你多看書。