3
A
回答
2
如果你的意思是嵌套類,沒有。我相信他們會在某一時刻被引入,但最終會被拋棄。
但是,如果這就是你所追求的,那麼支持namespace。
0
不,類不是PHP中的一等公民,因此它們不能存儲在變量中。
你可能有點讓通過功能的傳中您最一流的
class Parent_Class
{
public static $childClass;
public static function callChildMethod($methodName, array $args=array())
{
return call_user_func_array(array(self::$childClass, $methodName), $args);
}
}
class Child_Class
{
public static function hello()
{
echo 'hello';
}
}
Parent_Class::$childClass = 'Child_Class';
Parent_Class::callChildMethod('hello');
+0
我認爲他所說的是C#靜態嵌套類型: http://msdn.microsoft.com/en-us/library/ ms173120(VS.80).aspx 它們不存儲在變量中;他們只是通過他們的父類以靜態方式訪問。 – 2010-01-06 21:55:44
0
PHP不支持任何形式的(靜態或其他方式)嵌套類。
1
號
但是,你可以使用PHP的魔術方法之一,做你想做的,也許是:
class ParentClass {
public static function __callStatic($method,$args) {
return call_user_func_array(array('ChildClass',$method),$args);
}
}
class ChildClass {
public static function childMethod() {
...
}
}
ParentClass::childMethod($arg);
0
是的,你可以有嵌套靜態類在PHP中,但它不漂亮,並且需要一些額外的工作。語法與您的語法稍有不同。
訣竅是靜態初始化外部類並創建內部類的靜態實例。
然後你可以做兩件事情之一,兩者都在下面說明。
指的是內部類的靜態實例(子類實際上是用詞不當,因爲沒有繼承關係。)
的內部類的實例創建一個靜態訪問方法(這是優選的,因爲它允許發現。)
class InnerClass {
public static function Member_function() {
echo __METHOD__;
}
}
class OuterClass {
public static $innerClass;
public static function InnerClass() {
return self::$innerClass;
}
public static function init() {
self::$innerClass = new InnerClass();
}
}
OuterClass::init();
OuterClass::$innerClass->Member_function();
OuterClass::InnerClass()->Member_function();
相關問題
- 1. 靜態與非靜態堆棧
- 2. 在堆棧跟蹤中獲取被調用的靜態類名
- 3. 在PHP中堆棧和堆?
- 4. 堆棧溢出和靜態數組
- 5. 爲什麼不能將靜態類變量分配給堆棧?
- 6. 動態堆棧
- 7. 靜態,堆棧和堆分配如何不同?
- 8. Python是否有靜態對象,堆棧對象和堆對象?
- 9. 靜態,堆棧和堆內存分配的地址排序?
- 10. Java,堆棧類
- 11. TinyMCE堆棧類
- 12. PHP中的靜態類
- 13. 靜態變量在PHP類
- 14. 堆棧中的PHP回聲?
- 15. 如何使我的堆棧類動態
- 16. 靜態VS堆棧動態共享內存
- 17. 堆棧在java中使用堆棧
- 18. 堆棧VS堆帶類
- 19. 堆棧PHP代碼?
- 20. PHP數組堆棧調用類?
- 21. 如何在php中應用靜態類
- 22. 如何在PHP中創建靜態類
- 23. 堆棧的polymorphed類
- 24. 繼承堆棧類
- 25. 堆棧使用類
- 26. 堆棧vs堆棧內存使用情況C++用於動態創建的類
- 27. 如何創建一個將當前類靜態添加到堆棧的ASM LdcInsnNode?
- 28. 活動堆棧狀態
- 29. 使堆棧「動態」(C)
- 30. 動態堆棧分配
是啊,我基本上試圖用靜態類代替名稱空間;我真的很討厭\ char作爲一個命名空間分隔符..:P – Ian 2010-01-07 14:17:17