Неопределенная переменная Попытка получить свойство класса необъектных элементов

У меня есть некоторые проблемы с классом в PHP

class one{
public $value;
}

Вызов

$workone = new one();

Второй класс

class two{
function working(){
$value = $workone->value;
}
}

Я получаю эту ошибку:

Неопределенная переменная: рабочий в / xxx / xxxx / xxx в строке x

Попытка получить свойство необъекта в / xxx / xxxx / xxx в строке x

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();
0

Другие решения

Вам нужно использовать глобальное ключевое слово. Используйте код ниже

class two{
function working(){
global $workone;
$value = $workone->value;
}
}

Надеюсь, это поможет вам

0

Вы можете работать с наследством собственности $value в первом классе будет содержать myValue если вы реализуете под кодом.

class one {
protected $value;
}

class two extends one {
public function working($value){
$this->value = $value;
}
}

$classTwo = new two();
$classTwo->working('myValue');
0

Вы должны прочитать о сфере! Вы пытаетесь получить доступ к переменной, которая была определена вне метода working класса two и эта переменная не была определена как глобальная переменная.

Но иногда, объявив переменную как глобальную, вы можете столкнуться с большими проблемами. Поэтому мой совет — передать переменную в качестве аргумента вашему методу. working

class two{
function working($workone){
$value = $workone->value;
}
}

или определите свой $workone переменная внутри метода работает, если она соответствует вашим потребностям. Более важно, чем получить решение, это понять решение. Пожалуйста, прочитайте больше о сфере применения:

http://php.net/manual/en/language.variables.scope.php

0
По вопросам рекламы [email protected]