PHP 物件導向程式設計

2021-09-16 20:26:11 字數 1955 閱讀 7946

易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護

class myclass
new關鍵字和建構函式

類的例項使用new關鍵字建立。

$zhangsan = new person();
上面的**建立了person類的例項,當呼叫new的時候php會分配乙個新的物件,並且從你定義的類中拷貝屬性和方法,然後如果你定義了物件的建構函式的話,它會被自動呼叫,它在new關鍵字建立乙個物件後自動裕興。建構函式通常被用來自動執行很多初始化操作。建構函式也接收引數

使用$this變數訪問方法和屬性

在物件的方法執行時,php會自動定義乙個叫$this的特殊變數,他表示乙個對物件本身的引用

$this->name;     //訪問$name非靜態屬性(注意別在屬性的名字前面加$符號)

$this->getname(); //呼叫類的非靜態方法

public,protected和private屬性和方法

靜態屬性

靜態屬性和常規屬性不一樣,靜態屬性屬於類本身而不屬於類的任何勢力。靜態屬性使用static關鍵字定義。

訪問乙個靜態屬性:使用類名或者使用特殊的類名self來訪問它,self是乙個方法所屬的類的縮寫。

print myclass::$staticname;

print self::$staticname; //在類的方法中呼叫

靜態方法

靜態方法是類的一部分,不屬於類的任何例項。靜態方法中不能使用任何$this,因為靜態方法跟例項無關。

class_name::method();

self::method();

類的常量

與靜態成員相似,它們屬於類本身而不屬於類的例項。類的常量對大小寫敏感。

class myclass

}print myclass::red;

$obj = new myclass();

$obj->color();

多型

class cat

}class dog

}function makesound($obj)else if($obj instanceof dog)else

print "\n";

}makesound(new cat());

makesound(new dog());

上面的例子是不可以擴充套件的,想增加第三個動物聲音時,不得不在makesound()函式中增加esleif語句。可以使用多型解決這個問題

class animal

}class cat extends animal

}class dog extends animal

}function makesound($obj)else

print "\n";

}makesound(new cat());

makesound(new dog());

抽象類 abstract

如果類中定義了抽象方法,那麼這個類必須定義為抽象類,抽象類中的抽象函式沒有被實現,所以不是乙個完整的類,所以不能例項化抽象類的。

如果乙個類繼承了抽象類,那麼這個類必須實現抽象類的抽象方法

介面 inte***ce

inte***ce loggable
介面中的方法都是abstract的,就是說其中的方法都沒有實現

PHP物件導向程式設計

類中常用關鍵字 1 關鍵字 final 用來定義類和方法的乙個重要關鍵字,當定義類的時候該類將不能被繼承,當用來定義方法的時候該方法將不能被過載 2 關鍵字 self 用來用類訪問當前類中的內容的關鍵字,類似與 this關鍵字,但 this是需要 類例項化以後才可以使用,self 可以直接訪問當前類...

php物件導向程式設計

物件導向程式設計的概念 不同的作者之間說法可能不一樣,但是乙個oop語言必須有以下幾方面 抽象資料型別和資訊封裝 繼承 多型 在php中是通過類來完成封裝的 class something function getx 當然你可以按自已的喜好進行定義,但最好保持一種標準,這樣會更有效。資料成員在類中使...

php物件導向程式設計

單一職責 乙個類只需要做好一件事情。開放關閉 乙個類可擴充套件,而不可修改。依賴倒置 乙個類不應該強依賴另乙個類,每個類對於另乙個類都是可替換的。配置化 盡可能地使用配置,而不是硬編碼。面向介面程式設計 只需關心介面,不需要關心實現。單例模式 單例設計模式常應用於資料庫類設計,採用單例模式,只連線一...