除了在類中聲明每個函數爲「靜態」,還有什麼方法可以讓類本身成爲「靜態」?PHP中的靜態類
Q
PHP中的靜態類
1
A
回答
3
我想說的最好的方法是通過一個私人構造函數來防止對象實例化,並明確地將所有方法標記爲靜態。儘管必須小心地將所有方法標記爲靜態(這是PHP中不存在的靜態類的結果),但此方法相對於Singleton方法的好處是靜態方法比非靜態方法更有效。你可能也希望你的類被標記爲final,因爲大多數靜態類沒有被設計爲無論如何被擴展(這是一個很好的習慣)。
一個例子是這樣的:
final class PseudoStatic {
/**
* Prevent object instantiation
*/
private function __construct() {}
static public function method1() {
...
}
static public function method2() {
...
}
...
}
此外,Singleton pattern is now considered a bad practice by some。
7
不在PHP中 - 您必須將每個成員標記爲static
,您希望它們是靜態的。有關信息,請參閱the PHP manual。
0
0
或者如果你真正想要實現的是隻有一個類實例,那麼使構造函數是私有的,並提供靜態實例()方法。例如:
class PseudoStatic {
static private $instance;
private function __construct() {}
static public function instance() {
if (!self::$instance) {
self$instance = new self;
}
return self::$instance;
}
}
$instance = new PseudoStatic(); // error!
$instance = PseudoStatic::instance(); // force one instance only
5
沒有什麼可比的(例如)Java靜態類的方式。如果您只想在某種庫中收集函數,則可以將__construct()和__clone()方法設置爲私有。這將阻止創建實例。
相關問題
- 1. 靜態類中的靜態變量和非靜態類中的靜態變量
- 2. 調用一個靜態子類中的非靜態函數php
- 3. 抽象類中的PHP靜態變量
- 4. php中的私有靜態變量類
- 5. PHP中類的靜態方法/函數
- 6. 寫入PHP中的靜態類
- 7. 靜態PHP類中的全局變量
- 8. 靜態主類靜態類?
- 9. PHP靜態類問題
- 10. PHP和靜態類方法
- 11. 靜態變量在PHP類
- 12. PHP返回靜態類
- 13. 靜態類中的靜態屬性
- 14. PHP:子類靜態繼承 - 子類共享靜態變量?
- 15. 類const中的靜態類
- 16. 訪問非靜態類的靜態類
- 17. 在PHP中堆棧靜態類
- 18. 如何在php中應用靜態類
- 19. 如何在PHP中創建靜態類
- 20. 非靜態類中的靜態方法和靜態類中的靜態方法有什麼區別?
- 21. 靜態與非靜態類
- 22. 使用非靜態方法中的內部類的靜態類
- 23. PHP中的靜態變量
- 24. $ _GET和PHP中的靜態
- 25. PHP中靜態的ReflectionClass?
- 26. PHP中的靜態屬性
- 27. PHP中的靜態實例
- 28. PHP中的靜態方法
- 29. PHP:所謂的「靜態」 A類
- 30. PHP:類之外的靜態變量
你想用「靜態」類來完成什麼? – dnagirl 2009-11-10 13:04:18
靜態類和充滿函數的模塊/文件有什麼區別? – workmad3 2009-11-10 13:11:32
@dnagirl:我想在不添加「require ...」的情況下調用它的函數。類中的方法必須是可直接訪問的。 – RKh 2009-11-10 13:11:52