Я строю службу API и у меня есть родительский класс:
classAPI {
public responseCode = "";
public responseMessageLog ="";
function run{
// here I call my user auth class
$oUser = new classUser(...);
}
}
Внутри моего classUser я делаю кучу вещей, а затем записываю кучу переменных: responseMessageLog (который запускает журнал того, куда прошел скрипт) и responseCode (который установлен в 0 или 1 или что-то еще, в зависимости от успеха, сбоя или предупреждения).
Мне нужно получить доступ к моим переменным responseCode и responseMessageLog из моего класса User и моего родительского класса API, но на самом деле я не хочу передавать эти переменные в каждый дочерний класс, а затем передавать их обратно. Мне бы хотелось, чтобы когда я обновлял переменную в дочернем классе, она обновлялась везде во всем моем классе … вроде как глобальная переменная … но я знаю, что это не очень хорошая идея.
Как другие перестали передавать переменные по кроличьему следу классов.
в этом классе я
Передача зависимостей — это не кроличья нора, которую вы хотите избежать — она делает код более тестируемым. Однако вам не нужно передавать каждое свойство, вы можете передать родительский объект.
В вашем случае просто передайте classAPI
объект в конструктор classUser
и в конструкторе назначьте его свойству. classAPI
свойства являются общедоступными, поэтому вы можете получить к ним доступ в случае classUser
,
ClassAPI {
public $responseCode = "";
public $responseMessageLog ="";
public function run{
// here I call my user auth class
$oUser = new ClassUser($this, ...);
}
}
ClassUser {
public $myClassApi = null;
public function __construct(ClassAPI $myClassApi) {
$this->myClassApi = $myClassApi;
}
public function someFunction() {
echo $this->myClassApi->responseCode;
}
}
Добавленные заметки:
ClasUser
вместо того, чтобы передать ClassAPI
прямо в конструктор.Других решений пока нет …