我来自Java背景,我想在php中使用内部类。每次我放入内部类时,都会出现语法错误。这可能用PHP吗?另外,我如何引用外部类?我可以访问其所有数据成员吗?
<?php
class OuterClass {
var $x = 15;
function __construct() {
}
class InnerClass { // error when InnerClass is static
function __construct() { // error when InnerClass is static
echo $x;
}
}
}
?>
这用于特定纸牌游戏的MoveClass(如在移动中)。我认为将这些课程放在一起是一件很好的设计,因为它们没有任何区别。此外,MoveClass需要了解Game类的一些数据成员。为什么不把它变成一个功能呢?它太大了。
编辑:
嵌套类怎么样?据我所知,那些必须是静态的? O_O
答案 0 :(得分:20)
PHP不允许内部类。如果您希望访问父类中的所有数据成员,我建议您使用继承。
可能的替代方案:
class OuterClass {
var $x = 15;
function __construct() {
}
}
class ChildClass extends OuterClass {
function __construct() {
parent::__construct();
}
}
您可以通过引用类本身来调用父类的方法;在PHP中,您可以使用parent
关键字执行此操作。因此,要在类的上下文中引用方法而不是对象,我们使用::
而不是->
。
答案 1 :(得分:5)
在PHP 5.4或更高版本中,您可以使用专为多重继承而设计的PHP Traits,但可能适合您的需要。从PHP文档:
特质与类相似,但仅用于分组 功能细化和一致的方式。这不可能 自己实例化Trait。它是传统的补充 继承并实现行为的横向组合;那是, 类成员的应用程序,无需继承。
答案 2 :(得分:1)
您可能希望使用stdClass。以下是关于它的问题:What is stdClass in PHP?
答案 3 :(得分:0)
你不能像这样嵌套类。
查看the manual的“扩展”部分。