與同事討論過這是否是不好的做法。現在我無法找到這個在線的直接例子。靜態方法get - 這是不好的做法嗎?
我們有很多的數據庫對象映射器和調用它的功能,像這樣
(例如) - 該SETID方法得到的從數據庫中讀取行,並設置它的預定義propertys
class Person {
public static function get($id) {
$object = new Person;
$object->setId($id);
return $object;
}
}
使用它這樣我們可以用簡單的結構是這樣的:(這裏我們得到了從-例如後的ID)
$person = Person::get($id);
,而不是
$person = new Person;
$person->setId($id);
現在,我的直覺告訴我,這是不好的做法。但我無法解釋它。也許這裏有人能解釋這是爲什麼,或者是不壞的做法
下面是我們如何使用它的一些其他的例子。我們主要將它用於獲得者。 (只是名稱,而不是代碼,幾乎所有的人都只是運行一個查詢,它可以返回1個對象,然後使用結果的ID使用SETID法)
class CatalogArticle {
public static function get($id) { }
public static function getByArticlenumber($articlenumber) {} //$articlenumber is unique in the database
public static function getRandom() {} //Runs a query returning a random row
}
*(相關)* http://stackoverflow.com/questions/5166087/php-global-in-functions/5166527#5166527 – Gordon 2011-03-02 12:53:15
只是我的兩分錢,但Laravel的泰勒Otwell了熱因爲他使用工廠模式的靜態方法和其他靜態方法,但猜猜什麼是100%的單位覆蓋率。 – 2014-01-02 06:46:47