试图了解一些事情。我有一个Config类,我定义了一个常量负载。在我的其他一个类中,我需要使用Config中的一个常量。所以我开始使用类
use \CONFIG\Config;
在我的类构造函数中,然后我将类赋给变量
public function __construct() {
$config = new Config;
}
在consturctor中,我可以通过执行类似
的操作来访问常量$config::BASE_PATH;
所以我这样做时似乎没有任何抱怨。如果我创建了一个类变量,并将我的构造函数更改为以下
public function __construct() {
$this->config = new Config;
$this->config::BASE_PATH;
}
它抱怨它使用了对静态类成员的错误访问。
为什么它似乎作为局部变量工作,而不是作为类变量?
由于
答案 0 :(得分:1)
该问题与Composer无关。 它是PHP的语法问题,同时访问类常量。
PHP 7以下的PHP版本不支持访问类常量的语法$this->myclass::CONSTANT
。
<?php
class MyClass
{
const CONSTANT = 'constant value';
function showConstant() {
echo self::CONSTANT . "\n";
}
}
echo MyClass::CONSTANT . "\n";
$classname = "MyClass";
echo $classname::CONSTANT . "\n"; // As of PHP 5.3.0
class B
{
function __construct()
{
$this->myclass = new MyClass();
$this->myclass->showConstant();
/**
* #### This will not work in PHP Version below PHP 7! ####
*/
echo $this->myclass::CONSTANT;
}
}
$b = new B;
?>