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