我在php中遇到了一些麻烦
class one{
public $value;
}
呼叫
$workone = new one();
第二课
class two{
function working(){
$value = $workone->value;
}
}
我收到此错误:
未定义的变量:第x行的/ xxx / xxxx / xxx中的workone
尝试在第x行的/ xxx / xxxx / xxx中获取非对象的属性
答案 0 :(得分:0)
您需要使用全局关键字。使用以下代码
class two{
function working(){
global $workone;
$value = $workone->value;
}
}
希望这有助于你
答案 1 :(得分:0)
如果您在代码下实现,则可以使用继承,第一类中的属性$value
将包含myValue
。
class one {
protected $value;
}
class two extends one {
public function working($value){
$this->value = $value;
}
}
$classTwo = new two();
$classTwo->working('myValue');
答案 2 :(得分:0)
我将如何做到这一点。
使用依赖注入!
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();
答案 3 :(得分:0)
你应该读一下范围!您正在尝试访问在类working
的方法two
之外定义的变量,并且此变量未被定义为全局变量。
但有时,声明一个变量,因为全局可以给你带来更多问题。所以我的建议是将变量作为参数传递给方法working
...
class two{
function working($workone){
$value = $workone->value;
}
}
或在方法中定义$ workone
变量,如果它符合您的需要。比获得解决方案更重要的是了解解决方案。请阅读有关范围的更多信息: