1. php面向對象中對屬性和方法定義的問題
對屬性或方法的訪問控制,是通過在前面添加關鍵字 public、protected 或 private 來實現的。由 public 所定義的類成員可以在任何地方被訪問;由 protected 所定義的類成員則可以被其所在類的子類和父類訪問(當然,該成員所在的類也可以訪問);而由 private 定義的類成員則只能被其所在類訪問。
2. php 對象中
php的面向對象思想編程中聲明方法有三種不同的許可權:public protect private。
public:許可權是最大的,可以內部調用,實例調用等。
protected: 受保護類型,用於本類和繼承類調用。
private: 私有類型,只有在本類中使用。
這些許可權同樣可以應用在變數聲明中。
__set __get 都是php的魔術方法,主要是為了用來改變類的私有屬性用的。
你覺得麻煩可以將private私有的變數改為公共public變數,這個要看需求和個人對面向對象的思考。
3. php 對對象的屬性怎麼操作
用箭頭操作
classAction{
private$name=null;
functiongetName(){
return$this->name;
}
functionsetName($name){
$this->name=$name;
}
}
4. php 中的 -> 對象的方法或者屬性 一般是干什麼的用在什麼地方
你這樣用當然是不行的了,"->"符號是用在對象中的,符號左邊是對象右邊對象的屬性或者方法
例:
<?php
//一個people類
//有兩個屬性和一個方法
class People{
public $name;
public $age;
function say($word)
{
echo $word;
}
}
//實例化一個對象
$a = new People();
//對象屬性初始化
$a->name="zhangsan";
echo $a->name;
//調用 方法
$a->say("hello");
?>
5. php對象屬性賦值
你這樣使用時不符合oop的規范的,成員變數在最開始只能簡單的定義,如果你要實現上述的代碼應該這樣:
class Test{
public $strtodate = 0;
public function __construct() {
$this->$strtodate = strtotime('2012-01-22');
}
}
$test = new Test();
echo $test->strtodate;
6. 在php中,將一個對象賦給了一個屬性,那調這個屬性的對象是那個,
你將一個屬性的值定義成一個對象,那麼你如果想調用含有這個對象的屬性,那麼你必須要實例化含有這個對象屬性的對象
class A{} class B{ function __construct(){$this->a=new A()} } ,必須new B()
7. 誰能用比較通俗的語言解釋一下php類中的構造函數,他的作用以及為什麼會存在
從php5以後的版本,php的類就可以使用魔術方法了。
php規定以兩個下劃線(__)開頭的方法都保留為魔術方法,所以建議大家函數名最好不用__開頭,除非是為了重載已有的魔術方法。
PHP中的魔術方法有 :__construct,__destruct,__get, __set等
__get、__set這兩個方法是為在類和他們的父類中沒有聲明的屬性而設計的。
__get( $property ) 當調用一個未定義的屬性時,此方法會被觸發,傳遞的參數是被訪問的屬性名
__set( $property, $value ) 給一個未定義的屬性賦值時,此方法會被觸發,傳遞的參數是被設置的屬性名和值
這里的沒有聲明包括當使用對象調用時,訪問控制為proteced,private的屬性(即沒有許可權訪問的屬性)。
在php語言中,類構造器有兩種方法,一種是使用__construct,另一種是使用與類同名的方法。
__construct 構造方法,當一個對象創建時調用此方法,相對於PHP4使用此方法的好處是:可以使構造方法有一個獨一無二的名稱,無論它所在的類的名稱是什麼.這樣你在改變類的名稱時,就不需要改變構造方法的名稱。