У меня есть некоторые проблемы с классом в PHP
class one{
public $value;
}
Вызов
$workone = new one();
Второй класс
class two{
function working(){
$value = $workone->value;
}
}
Я получаю эту ошибку:
Неопределенная переменная: рабочий в / xxx / xxxx / xxx в строке x
Попытка получить свойство необъекта в / xxx / xxxx / xxx в строке x
Вот как бы я это сделал.
Используя внедрение зависимости!
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{
function working(){
global $workone;
$value = $workone->value;
}
}
Надеюсь, это поможет вам
Вы можете работать с наследством собственности $value
в первом классе будет содержать myValue
если вы реализуете под кодом.
class one {
protected $value;
}
class two extends one {
public function working($value){
$this->value = $value;
}
}
$classTwo = new two();
$classTwo->working('myValue');
Вы должны прочитать о сфере! Вы пытаетесь получить доступ к переменной, которая была определена вне метода working
класса two
и эта переменная не была определена как глобальная переменная.
Но иногда, объявив переменную как глобальную, вы можете столкнуться с большими проблемами. Поэтому мой совет — передать переменную в качестве аргумента вашему методу. working
…
class two{
function working($workone){
$value = $workone->value;
}
}
или определите свой $workone
переменная внутри метода работает, если она соответствует вашим потребностям. Более важно, чем получить решение, это понять решение. Пожалуйста, прочитайте больше о сфере применения: