未定义的变量试图获取 属性 个非对象元素 class
Undefined variable Trying to get property of non-object elements class
我在 php
中使用 class 遇到了一些问题
class one{
public $value;
}
通话
$workone = new one();
第二个Class
class two{
function working(){
$value = $workone->value;
}
}
我收到此错误:
Undefined variable: workone in /xxx/xxxx/xxx on line x
Trying to get property of non-object in /xxx/xxxx/xxx on line x
您需要使用全局关键字。使用下面的代码
class two{
function working(){
global $workone;
$value = $workone->value;
}
}
希望对您有所帮助
您可以继承 属性 $value
in class 如果您在下面的代码中实现,其中一个将包含 myValue
。
class one {
protected $value;
}
class two extends one {
public function working($value){
$this->value = $value;
}
}
$classTwo = new two();
$classTwo->working('myValue');
这就是我的做法。
通过使用依赖注入!
class one{
public $value;
}
class two{
private $workone;
function __construct(One $workone){
$this->workone = $workone;
}
function working(){
$value = $this->workone->value;
}
}
$workone = new one();
$worktwo = new two($workone);
$worktwo->working();
您应该阅读范围!您正在尝试访问在 class two
的方法 working
之外定义的变量,并且此变量未定义为全局变量。
但有时,将变量声明为全局变量会给您带来更多问题。所以我的建议是将变量作为参数传递给你的方法 working
...
class two{
function working($workone){
$value = $workone->value;
}
}
或者在符合您需要的方法中定义您的 $workone
变量。比获得解决方案更重要的是理解解决方案。请阅读有关范围的更多信息:
我在 php
中使用 class 遇到了一些问题class one{
public $value;
}
通话
$workone = new one();
第二个Class
class two{
function working(){
$value = $workone->value;
}
}
我收到此错误:
Undefined variable: workone in /xxx/xxxx/xxx on line x
Trying to get property of non-object in /xxx/xxxx/xxx on line x
您需要使用全局关键字。使用下面的代码
class two{
function working(){
global $workone;
$value = $workone->value;
}
}
希望对您有所帮助
您可以继承 属性 $value
in class 如果您在下面的代码中实现,其中一个将包含 myValue
。
class one {
protected $value;
}
class two extends one {
public function working($value){
$this->value = $value;
}
}
$classTwo = new two();
$classTwo->working('myValue');
这就是我的做法。
通过使用依赖注入!
class one{
public $value;
}
class two{
private $workone;
function __construct(One $workone){
$this->workone = $workone;
}
function working(){
$value = $this->workone->value;
}
}
$workone = new one();
$worktwo = new two($workone);
$worktwo->working();
您应该阅读范围!您正在尝试访问在 class two
的方法 working
之外定义的变量,并且此变量未定义为全局变量。
但有时,将变量声明为全局变量会给您带来更多问题。所以我的建议是将变量作为参数传递给你的方法 working
...
class two{
function working($workone){
$value = $workone->value;
}
}
或者在符合您需要的方法中定义您的 $workone
变量。比获得解决方案更重要的是理解解决方案。请阅读有关范围的更多信息: