gpt4 book ai didi

PHP - 严格的标准 : Accessing static property as non static - Nothing is static?

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:42 25 4
gpt4 key购买 nike

我很迷茫。我已经花几个小时广泛地复习了我的两个类(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com