Php Composer项目访问不同的类
试图理解一些事情。我有一个Config类,我在其中定义了一个常量负载。在我的另一个类中,我需要使用Config中的一个常量。所以我从使用这个类开始Php Composer项目访问不同的类,php,Php,试图理解一些事情。我有一个Config类,我在其中定义了一个常量负载。在我的另一个类中,我需要使用Config中的一个常量。所以我从使用这个类开始 use \CONFIG\Config; 在我的类构造函数中,我然后将类分配给一个变量 public function __construct() { $config = new Config; } 在constructor中,我可以通过这样做来访问常量 $config::BASE_PATH; 所以我在做这件事时似乎没有收到任何抱怨。如果
use \CONFIG\Config;
在我的类构造函数中,我然后将类分配给一个变量
public function __construct() {
$config = new Config;
}
在constructor中,我可以通过这样做来访问常量
$config::BASE_PATH;
所以我在做这件事时似乎没有收到任何抱怨。如果我创建一个类变量,并将构造函数更改为
public function __construct() {
$this->config = new Config;
$this->config::BASE_PATH;
}
它抱怨正在使用对静态类成员的不正确访问
为什么它看起来像是一个局部变量,而不是一个类变量
谢谢这个问题与作曲家无关。 这是PHP在访问类常量时的语法问题 PHP7以下的PHP版本不支持访问类常量的语法
$this->myclass::CONSTANT
嗯<代码>:未列在php.net的运算符优先级页面上。我的猜测是作用域解析是在应用
->
之前发生的。可能是
<?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;
?>