我很迷茫。我已经花几个小时广泛地复习了我的两个类(class)。没有什么是静态的,没有什么是静态引用的,但我无法摆脱这个错误。
A 类文件 (ClassA.php)
<?php
namespace MyProject\A;
require_once "B.php";
use MyProject\B as B;
class A
{
private $privateVariable;
public function __construct()
{
$b = new B\B();
$this->privateVariable = $b->something;
}
}
B类文件(B.php)
<?php
namespace MyProject\B;
class B
{
public $something;
public function __construct()
{
$this->something = "Some (dynamic) string value";
}
}
我对类并不陌生,但是我以前从未遇到过这个问题(至少没有静态变量或方法或静态引用)。
我得到的错误是:
Strict Standards: Accessing static property MyProject\B\B::$something as non static in A.php on line (this line:
$this->privateVariable = $b->something
)
和
Notice: Undefined property: MyProject\B\B::$something in A.php on line (this line:
$this->privateVariable = $b->something
)
我想任何阅读本文的人都明白我想将 B 的变量 $something
放入 A 的变量 $privateVariable
中,同时在实例化时将类 B 作为类 A 中的一个实例A类喜欢:
<?php
namespace MyProject\Something;
require_once "A.php";
use MyProject\A as A;
$a = new A\A()
// $a's private variable $privateVariable should be set to "Some (dynamic) string value"
非常感谢有关此问题的任何帮助!
编辑
更改代码以更好地反射(reflect)原始代码(将
use AS
更改为 use as
并更改 use 调用适当类的方式PHP 版本:5.6
编辑 2
老实说,我不知道发生了什么。
- 我上传了我的文件到服务器
- 然后我检查了它们是否已正确上传
- 我仍然收到那些错误
- 然后我注释掉上面几行以外的所有代码
- 我仍然收到错误
- 然后我取消注释我刚刚注释掉的行(使用 CTRL+Z)
- 然后我重新上传了文档
- 我确保它们已正确上传
- 现在一切正常。
对于这个问题我深表歉意,但我认为它更像是一个错误,而不是实际的代码问题。我只会为此责怪 Godaddy(是的,我知道 Godaddy 是不错的选择讽刺)
最佳答案
在这里,完整的单个文件示例:
namespace MyProject\ClassA {
use MyProject\ClassB\B;
class A {
private $privateVariable;
public function __construct() {
$b = new B();
$this->privateVariable = $b->something;
print $this->privateVariable;
}
}
}
namespace MyProject\ClassB{
class B{
public $something;
public function __construct()
{
$this->something = "Some (dynamic) string value";
}
}
}
namespace MyProject\Something {
use MyProject\ClassA\A;
$a = new A();
}
测试它。
更新:
您使用:
use MyProject\A as A;
$a = new A\A();
但是使用 MyProject\A
指向命名空间而不是类。
所以这是正确的:
use MyProject\A\A as A;
$a = new A();
另一个注意事项使用这个:use\MyProject\A\A
with \
首先。
关于PHP - 严格的标准 : Accessing static property as non static - Nothing is static?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38461880/