Кроме того, поскольку $this::
еще не обсуждалось.
Только в информационных целях, начиная с PHP 5.3, когда имеешь дело с экземплярами объектов, чтобы получить текущее значение области действия, в отличие от static::
, можно альтернативно использовать $this::
, например, так.
http://ideone.com/7etRHy
class Foo
{
const NAME = 'Foo';
//Always Foo::NAME (Foo) due to self
protected static $staticName = self::NAME;
public function __construct()
{
echo $this::NAME;
}
public function getStaticName()
{
echo $this::$staticName;
}
}
class Bar extends Foo
{
const NAME = 'FooBar';
/**
* override getStaticName to output Bar::NAME
*/
public function getStaticName()
{
$this::$staticName = $this::NAME;
parent::getStaticName();
}
}
$foo = new Foo; //outputs Foo
$bar = new Bar; //outputs FooBar
$foo->getStaticName(); //outputs Foo
$bar->getStaticName(); //outputs FooBar
$foo->getStaticName(); //outputs FooBar
Использование приведенного выше кода не является распространенной или рекомендуемой практикой, а просто иллюстрирует его использование и действует как «Знаете ли вы?» со ссылкой на оригинальный вопрос автора.
Он также представляет использование $object::CONSTANT
, например, echo $foo::NAME;
, в отличие от $this::NAME;
.