开发者

PHP - why I couldn't declare static const variable?

开发者 https://www.devze.com 2023-01-23 01:22 出处:网络
I would use them to implement factory pattern, for example: class Types{ static const car = \"CarClass\";

I would use them to implement factory pattern, for example:

class Types{
   static const car = "CarClass";
   static const tree = "TreeClass";
   static const cat = "CatClass";
   static const deathstar = "DeathStarClass";
}

And I would like to use them like:

$x = new Types::car;

Is it possible?

And what if my class has parametr in construcor, that doesn't w开发者_JS百科ork:

$x = new Types::car(123);


Your code should be:

class Types{
   const car = "CarClass";
   const tree = "TreeClass";
   const cat = "CatClass";
   const deathstar = "DeathStarClass";
}

Note that since constants are tied to the class definition, they are static by definition.

From Docs:

As of PHP 5.3.0, it's possible to reference the class using a variable. The variable's value can not be a keyword (e.g. self, parent and static).

http://www.php.net/manual/en/language.oop5.static.php

More Info:

http://php.net/manual/en/language.oop5.constants.php


Constants are already static in the sense that they aren't tied to an instance of the class. Here is how to define them and use them as you want:

class Types{
   const car = "CarClass";
   const tree = "TreeClass";
   const cat = "CatClass";
   const deathstar = "DeathStarClass";
}

$x = Types::car;


It's a constant. You can't change it. So it doesn't make any sense that you'd have a non-static constant member. So you don't have to declare them as static or class variables.

0

精彩评论

暂无评论...
验证码 换一张
取 消