我正在研究一個簡單的抽象數據庫類。在我使用這個類時,我想讓某個實例成爲一個單例。我在想有抽象類,它是不一個單身的,然後將其延伸到另一個抽象類,是單身。這可能嗎?推薦的?抽象類在PHP中擴展抽象類?
編輯:我想有兩個幾乎相同的摘要,除了一個是單身。所以唯一的區別是一個人會擁有另一個人的所有功能,但是會有其他的特性和方法,使其表現得像一個單身人士。
我想有這一個基類的代碼庫,以便我做出改變,我沒有讓兩個文件同步。
我正在研究一個簡單的抽象數據庫類。在我使用這個類時,我想讓某個實例成爲一個單例。我在想有抽象類,它是不一個單身的,然後將其延伸到另一個抽象類,是單身。這可能嗎?推薦的?抽象類在PHP中擴展抽象類?
編輯:我想有兩個幾乎相同的摘要,除了一個是單身。所以唯一的區別是一個人會擁有另一個人的所有功能,但是會有其他的特性和方法,使其表現得像一個單身人士。
我想有這一個基類的代碼庫,以便我做出改變,我沒有讓兩個文件同步。
在我做事情的方式,我相信有一個抽象的單都沒用。這是因爲,你想成爲一個單獨什麼
1)是您實例的應用程序中使用它是否會成爲一個庫,模型,控制器或視圖,而不是抽象的最後一節課。
2)添加單方法容易,並且可以在8行寫入。見下文。
protected static $_instance;
public static function getInstance()
{
if (!isset(self::$_instance)) {
self::$_instance = new self();
}
self::$_instance;
}
3)PHP 5.3以下版本不支持後期靜態綁定。這將導致實例化抽象類而不是繼承它的最終類,並且不會像預期的那樣起作用,正如Gordon和nuqqsa已經提到的那樣。所以,爲了向後兼容,最好避免它。
Singleton模式的實施必須滿足兩個要求:
只要提供了它,變化就是多重的。如果這是您需要的,將類抽象從另一個抽象擴展出來是沒有問題的。但是,正如@Gordon說,要知道,重寫靜態方法/屬性導致PHP < 5.3奇特的行爲。