Lin*_*ndz 32 php class inner-classes
我来自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;
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这用于特定纸牌游戏的MoveClass(如在移动中).我认为将这些课程放在一起是一件很好的设计,因为它们没有任何区别.此外,MoveClass需要了解Game类的一些数据成员.为什么不把它变成一个功能呢?它太大了.
编辑:
嵌套类怎么样?据我所知,那些必须是静态的?O_O
Rus*_*ias 20
PHP不允许内部类.如果您希望访问父类中的所有数据成员,我建议您使用继承.
可能的替代方案:
class OuterClass {
var $x = 15;
function __construct() {
}
}
class ChildClass extends OuterClass {
function __construct() {
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过引用类本身来调用父类的方法; 在PHP中,您可以使用parent关键字执行此操作.因此,要参考的方法在类的范围内,而不是我们使用的对象::,而不是->.
小智 5
在PHP 5.4或更高版本中,您可以使用专为多重继承而设计的PHP Traits,但可能适合您的需要.从PHP文档:
Trait类似于类,但仅用于以细粒度和一致的方式对功能进行分组.无法自行实例化Trait.它是对传统继承的补充,可以实现行为的横向组合; 也就是说,类成员的应用程序不需要继承.
http://php.net/manual/en/language.oop5.traits.php