РЕДАКТИРОВАТЬ: извините, я предположил ниже, что вы будете создавать новый экземпляр «объекта» с каждой ошибкой, что, очевидно, вы не делаете.Только отредактировал мой ответ, чтобы отразить это.
"Когда мне следует использовать $ this-> foo = $ foo?"
Может быть несколько случаев, когда вы это сделаете, но обычно этоесли вы создаете $ foo внутри метода и хотите, чтобы к нему обращался весь объект.
Например, если вы хотите вызвать объект и использовать его в этом конкретном объекте (если это не такимеет смысл продлить).Вы могли бы сделать что-то вроде:
$foo = new DataModel();
$this->foo = $foo;
ИЛИ
$this->foo = new DataModel();
Этот объект может быть декоратором или чем-то еще, связанным с обработкой ошибок, и приведенный выше код обычно присутствует в вашем конструкторе.Затем вы можете в любое время получить доступ к методам этого объекта, используя:
$this->foo->objectMethod();
.. и выразить что-то, отмеченное в комментариях к этому ответу:
"вы назначите$ file для объекта, как это используется в нескольких методах? "
Я бы не назначил $ file для объекта, вот почему.Семантика слова «свойство» означает «принадлежит».В вашем случае ваш класс является обработчиком ошибок.$ file не принадлежит обработчику ошибок, он принадлежит экземпляру ошибки.Если бы вашим классом был MyErrorHandler_Error (созданный для каждого экземпляра инициируемой ошибки), то $ file будет свойством этого класса, вместе с $ line и $ level.
Чтобы ответить на то, что я могу издругие ваши вопросы:
Это ни то, ни другое.Я бы посчитал это предпочтением.
Да - любые переменные или значения, которые должны быть доступны для всего вашего объекта и необходимы для правильной работы объекта, вероятно, должны быть установлены внутри вашего конструктора, еслине в ваших объявлениях переменных (не уверен в терминологии) в верхней части класса.
прочтите комментарии ниже.Поскольку этот конкретный класс имеет дело с несколькими экземплярами ошибок, присваивание свойств этих ошибок объекту не будет лучшей практикой, поскольку вы будете перезаписывать их с каждой новой ошибкой.Однако имеет смысл хранить все ваши ошибки и свойства ошибок в массиве, назначенном объекту, если вам требуется доступ к историческим данным.Например, на данный момент, если вы создаете новую ошибку - это все, что вы делаете.У вас нет возможности получить доступ к любым старым ошибкам, которые создал этот объект.
см. Выше
Вам также следует учитывать конфликты при назначении свойств дляобъекты.Вы, вероятно, переназначите, потому что если так, то старая собственность исчезнет.Довольно просто, но все же нужно учесть.