如何从对象而不是其类访问常量


How to access a constant from an object instead of its class?

我需要访问一个属于类的常量,但我不想显式地写入类名,而是想直接从对象中检索它。该对象是另一个对象的属性。

$this->fetcher::BASE_URL

此语句产生错误syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)

这里有一个丑陋的工作。。。。

<?php
class simpleClass {
    public function __construct() {
        $this->fetcher = new simpleClass2();
    }
    public function printBaseURL() {
        $fetcher = $this->fetcher;
        print 'Base URL: ' . $fetcher::BaseUrl;
    }
}
class simpleClass2 {
    const BaseUrl = 'one';
}

$simpleClass = new simpleClass();
$simpleClass->printBaseURL();

您可以使用函数返回常量

class MyClass
{
   function getConstant() {
       return  self::CONSTANT . "'n";
   }
}

然后调用该函数

$class = new MyClass();
$class->getConstant();

或者简单地称为常数

MyClass::CONSTANT;

您可以在此处找到有关访问类中常量的更多信息。看看"用户贡献的笔记",非常好的例子和解释。