Size: a a a

2020 January 09

A

Alex in phpGeeks
Ребят, привет. Банальный вопрос.
Есть класс, в нем нем метод.
Я хочу наследоваться и переопределить метод но на 95% код будет неизменным.
Чтобы избежать копипаста и повторения кода хочется это вынести в какое-то отдельное место.

Есть ли еще какие то варианты/паттерны, как это можно реализовать?
источник

РД

Ратмир Диронин in phpGeeks
Добавить метод, который будет этими 5% и под абстракцию его подвести
источник

AS

Alexey Shatunov in phpGeeks
Ратмир Диронин
Добавить метод, который будет этими 5% и под абстракцию его подвести
разрыв контекста подводить под абстракцию не всегда хорошая идея... в данном случае if-чик
источник

РД

Ратмир Диронин in phpGeeks
Alexey Shatunov
разрыв контекста подводить под абстракцию не всегда хорошая идея... в данном случае if-чик
Зачем переопределять 100%, если можно переопределить лишь 5%? Он и так хочет наследоваться
источник

AS

Alexey Shatunov in phpGeeks
либо подойдет и композиция, например стратегия
источник

AS

Alexey Shatunov in phpGeeks
но именно исходный метод трогать вообще плохо в данном случае... он же не виноват
источник

BH

Bogdan Hmarnii in phpGeeks
@didalex можно метод всунуть в траит, можно создать абстрактный класс и от него наследовать 2 класса
источник

РД

Ратмир Диронин in phpGeeks
Bogdan Hmarnii
@didalex можно метод всунуть в траит, можно создать абстрактный класс и от него наследовать 2 класса
Я и говорил про 2-й способ
источник

BH

Bogdan Hmarnii in phpGeeks
но переопределять методы сомнительаня идея, сделай фасад, основной метад сделай приватным и два фасада над ним functionA, functionB которые вызывают главный метод но с этими 5% разницы
источник

BH

Bogdan Hmarnii in phpGeeks
но опять же…так люблю когда просят помочь по догадкам) хотяб кусок кода чтобы понять о чем речь
источник

A

Alex in phpGeeks
Ратмир Диронин
Я и говорил про 2-й способ
я пока остановился на "вынести неизменную логику в отдельный метод родительского класса"
но трабла основная в том, что код родительского метода обернут в try catch который просто позвращает null, а мне надо обрабаотывать ошибку и хочу сделать
тот же самый метод но без try-catch
источник

BH

Bogdan Hmarnii in phpGeeks
так… может будет кусок кода?
источник

РД

Ратмир Диронин in phpGeeks
Alex
я пока остановился на "вынести неизменную логику в отдельный метод родительского класса"
но трабла основная в том, что код родительского метода обернут в try catch который просто позвращает null, а мне надо обрабаотывать ошибку и хочу сделать
тот же самый метод но без try-catch
return exception;
источник

BH

Bogdan Hmarnii in phpGeeks
воу воу..куда ты ее вернешь из catch? ))
источник

🦔

🦔 in phpGeeks
Alex
Ребят, привет. Банальный вопрос.
Есть класс, в нем нем метод.
Я хочу наследоваться и переопределить метод но на 95% код будет неизменным.
Чтобы избежать копипаста и повторения кода хочется это вынести в какое-то отдельное место.

Есть ли еще какие то варианты/паттерны, как это можно реализовать?
не расстраивай барбару
источник

BH

Bogdan Hmarnii in phpGeeks
максимум можно rethrow новой ошибки и выше овбернуть еще в один try/catch
источник

РД

Ратмир Диронин in phpGeeks
Разве пхп сразу трейс бросает в catch'e?
источник

BH

Bogdan Hmarnii in phpGeeks
в каком смысле? a). вошибках есть трейс б) в любом месте монжо вызвать debub_backtrace
источник

РД

Ратмир Диронин in phpGeeks
Я имею ввиду, что получив ошибку через catch можно дальше продолжать обработку метода. Или пхп так не умеет?
источник

BH

Bogdan Hmarnii in phpGeeks
ты в кетче можешь произвести манипуляции но на этом код как бы умирает и возвращает ошибку
источник