我会用它们来实现factory
模式,例如:
class Types{
static const car = "CarClass";
static const tree = "TreeClass";
static const cat = "CatClass";
static const deathstar = "DeathStarClass";
}
我想像他们一样使用它们:
$x = new Types::car;
有可能吗?
如果我的班级在construcor中有参数,那该怎么办呢?
$x = new Types::car(123);
答案 0 :(得分:21)
您的代码应为:
class Types{
const car = "CarClass";
const tree = "TreeClass";
const cat = "CatClass";
const deathstar = "DeathStarClass";
}
请注意,由于常量与类定义相关联,因此根据定义它们是静态的。
来自文档:
从PHP 5.3.0开始,它是可能的 使用变量引用类。 变量的值不能是a 关键字(例如自我,父母和 静态)。
http://www.php.net/manual/en/language.oop5.static.php
更多信息:
答案 1 :(得分:4)
常量已经是静态的,因为它们与类的实例无关。以下是如何定义它们并根据需要使用它们:
class Types{
const car = "CarClass";
const tree = "TreeClass";
const cat = "CatClass";
const deathstar = "DeathStarClass";
}
$x = Types::car;
答案 2 :(得分:1)
这是一个常数。你无法改变它。所以你有一个非静态常量成员没有任何意义。因此,您不必将它们声明为静态或类变量。