См. «Обновления» в конце: Текущая база кода имеет 1.4k-строку чисто процедурного кода, который отправляет sms (имеет бизнес-логику, db-связь и все в одном гигантском, if условно вложенное бесчисленное множество, if s, никаких функций, полных литералов, подлинного кандидата DailyWTF? ). И я решил укусить пулю и переписать всю чертову с нуля. Дело в том, что это будет […]
Ранее сегодня я занимался исследованиями абстрактных классов , интерфейсов и черт PHP. Насколько я могу судить, абстрактный класс говорит, что «все, что использует меня, будет использовать эти методы и атрибуты», интерфейсы говорят, что «все, что использует меня, должно иметь эти методы и атрибуты», и черты говорят, что «все, что меня использует, также будет иметь эти […]
Я натолкнулся на некоторый PHP-код, написанный сотрудником (он ничем не использовался). В основном это был интерфейс, содержащий абстрактные методы. Затем я сказал, что это глупо и показывает, что рядом со мной сидит другой сотрудник. Мы засмеялись, но потом стали спрашивать друг друга, если это было возможно, и если да, то если это было действительно полезно. […]
Интерфейсы позволяют создавать код, который определяет методы классов, которые его реализуют. Однако вы не можете добавить код к этим методам. Абстрактные классы позволяют делать то же самое, вместе с добавлением кода к методу. Теперь, если вы можете достичь той же цели с абстрактными классами, почему нам даже нужна концепция интерфейсов? Мне сказали, что это связано […]
В последнее время я пытаюсь учиться на PHP, и я нахожу, что меня повесили на чертах. Я понимаю концепцию повторного использования горизонтального кода и не желаю обязательно наследовать от абстрактного класса. То, что я не понимаю, является решающим различием между использованием признаков и интерфейсов? Я попытался найти достойный пост в блоге или статью, объясняющую, когда […]
Интерфейсы PHP позволяют определять константы в интерфейсе, например interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 Любой класс реализации автоматически будет иметь эти константы, например class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 Мое собственное мнение об этом заключается в том, что все Глобальное злом […]
Я искал вокруг SO, а также остальную часть Интернета для хорошего ответа, но я не нашел того, что я действительно понимаю. Я собираюсь представить это по-другому, и, надеюсь, ответы помогут и другим. Насколько я понимаю, обе концепции имеют одни и те же правила, за исключением того, что абстрактный класс более гибкий из-за способности реализации метода. […]