final關鍵字防止類的其他類,例如正在擴大Fatal error: Class Pet may not inherit from final class (Brother)
這也適用於方法,因此,如果你這樣做不希望允許繼承方法導致子類具有相同的方法作爲覆蓋。
http://php.net/manual/en/language.oop5.final.php
喲用你想要的一些真實世界的例子哪些接口可用於,以及數據庫抽象層
你有1個基類,它提供了基本的方法來遍歷數據庫數據,但是會爲數據庫類型使用子類,如MySql
,MsSql
等,每種數據庫類型都有它自己的類,但是爲了確保基類具有這些方法,它們都將實現相同的類接口。
例
interface IDatabaseLayer
{
public function connect();
public function query();
public function sanitize();
//...
}
所以基類知道MySQL和MSSQL有上述方法,從而減少錯誤和爲更有條理。
將對象傳遞給類時,如果要確保對象具有某種類型,則PHP5允許您定義應將哪些類型的對象作爲參數傳遞給方法。
可以說你有3類
DatabaseCredentials
DatabaseConnection
DatabaseQuery
你可以在DatabaseConnection
,你需要一個DatabaseCredentials
類,像這樣的constructuin具體界定:
class DatabaseConnection implements Connectable
{
public function __construct(DatabaseCredentials $ConnectionDetails)
{
$this->Connect($ConnectionDetails->BuildDSN());
}
}
的一個好方法真正開始是通過閱讀這裏:
您不妨看看PHP5的另一個特點是名稱空間,這將允許你保持你的代碼有組織,有多個對象具有相同的名稱,使自動加載更有效
小示例:
namespace Database\MySql
{
class Database{}
}
namespace Database\MsSql
{
class Database{}
}
,你可以直接使用,如:
use Database;
$Database = new MySql\Database();
此外,ZF2正在進行維基工作:http://framework.zend.com/wiki/display/ZFDEV2 – joksnet 2011-01-13 10:24:12
@戈登:例如看看那個:http://www.php.net/manual/en /class.splheap.php – vartec 2011-01-13 14:58:21