Этой статьей я открываю рубрику из практики "Как делать не надо". В ней будет код из реальных проектов, из которого я уберу все отсылки к самим проектам. И, конечно, разъяснение: почему так делать нельзя, и как бы поступить стоило.
Итак, первый пациент. Внутри трейта используются поля его наследников. То есть, что-то такое:
trait Foo
{
public function bar(): string
{
return $this->field . self::CONSTANT . $this->method() . true;
}
}
Примечание
Или даже хуже, $this->{$attribute}
. Но это уже совсем ни в какие ворота не лезет, т.к. шанс схлопотать 500ю ошибку поднимается почти до 100%.
April 23, 2023