Вопрос-Ответ по ООП PHP

Печать RSS
2481


Пацак
+1
JiGaN, погугли PSR. Наглядное пособие
P

Чатланин
0
Ну вот, если я создам интерфейс, опишу функционал и реализую его в классе, а затем просто снесу нафиг интерфейс, скрипт от этого не поломается, как например в c# или python, поэтому и вопрос нахрена пхп интерфейс?
@JiGaN (Сегодня / 05:57)
Тогда твой класс потеряет функционал, который определен в интерфейсе.

Добавлено через 04:04 сек.
JiGaN, у интерфейса не тривиальная задача, как может показаться на первый взгляд. Это можно понять только при углубленном изучении ооп.

Господин ПЖ
0
Есть такой принцип SOLID https://ru.wikipedia.org/wiki/Принцип_инверсии_зависимостей
https://habr.com/ru/post/313796/
который говорит что
Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Так вот в качестве абстракции вполне можно иметь ввиду интерфейс
Изменил: Вантуз-мен (30.04.2019 / 16:42)
J

Землянин
+1
@JiGaN, погугли PSR. Наглядное пособие
@KpuTuK (Вчера / 08:28)
Это всего лишь гуид стайл и рекомендации, но не панацея

Добавлено через 07:22 сек.
@JiGaN, погугли PSR. Наглядное пособие
@KpuTuK (Вчера / 08:28)
Это всего лишь гуид стайл и рекомендации, но не панацея
Есть такой принцип SOLID https://ru.wikipedia.org/wiki/Принцип_инверсии_зависимостей
https://habr.com/ru/post/313796/
который говорит что
Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Так вот в качестве абстракции вполне можно иметь ввиду интерфейс
@Vantuz (Вчера / 16:40)
Ну допустим, но ведь это не обязательно интерфейс, и даже сама абстракция в ооп.

Пацак
0
JiGaN, это тебе пример применения
P

Чатланин
+1
JiGaN, лол это и была панацея, общая информация, которая применима не только к php ооп. Я думаю, что тебе стоит для начала разобраться с терминологией.

Господин ПЖ
0
JiGaN, один из принципов php это полиморфизм, вот как раз на основе его можно объяснить для чего нужны абстрактные классы или интерфейсы, представь что у тебя есть класс Comment и в нем метод, который принимает объект другого класса, это может быть комментарий новости , статьи итд, и в методе нельзя указать какой-то конкретный класс, но можно указать абстрактный от которого наследуются все модели новостей , статей или интерфейс, который они реализуют

Добавлено через 03:09 сек.
Да , конечно , ты прав, можно вообще не использовать ООП , работать только с функциями , но тогда не будет гибкости, или например не указывать имя класса вообще, вроде в 7.3 появился тип object, тогда не понятно будет что это за объект , какого класса, какие методы он содержит итд
P

Чатланин
+1
J

Землянин
0
@JiGaN, один из принципов php это полиморфизм, вот как раз на основе его можно объяснить для чего нужны абстрактные классы или интерфейсы, представь что у тебя есть класс Comment и в нем метод, который принимает объект другого класса, это может быть комментарий новости , статьи итд, и в методе нельзя указать какой-то конкретный класс, но можно указать абстрактный от которого наследуются все модели новостей , статей или интерфейс, который они реализуют

Добавлено через 03:09 сек.
Да , конечно , ты прав, можно вообще не использовать ООП , работать только с функциями , но тогда не будет гибкости, или например не указывать имя класса вообще, вроде в 7.3 появился тип object, тогда не понятно будет что это за объект , какого класса, какие методы он содержит итд
@Vantuz (Сегодня / 17:55)

Спасибо за уделенное время, я стараюсь писать в ооп стиле, работал и с ларавел и с yii, начинал с codeigniter(для начало самое то фрейм, жалко не обновляется, который год неймспейсы обещают)
Стараюсь придерживаться как минимум стандартов фреймворка, ну и по рекомендации zend code style, пишу крупные проекты по работе, могу написать абсалютно любую вещь на пыхе, и пока еще ниразу не спалился, что я МЛИН теорию знаю совершенно хреного. Мне повезло что при поступлении на работу мне тупо дали задание и небольшое тз, была бы это теория то баам и фиаско.
Вообщем то минута откровений истекла))
Про книги говорить думаю не стоит, я и так много читаю, но мало что оседает с нужным пониманием в голове.

Добавлено через 06:51 сек.
да и про unit тесты отдельно спрашивать? Такой вопрос возник, как вы модели тестируете? Те которые в базу запросы шлют, надо-ли создавать отдельные тестовые таблицы, или достаточно в мок инициализировать датабейс обработчик? Как вообщем-то вы используете это напрактике?
Изменил: JiGaN (01.05.2019 / 19:44)

Господин ПЖ
0
Если ты тестируешь именно сохранение создание, изменение записи , то конечно надо прямо работать с бд, но естественно в транзакции, чтобы потом не осталось мусора,
А если тебе нужно протестировать метод который что-то делает с данными и использует записи из бд, вот тут можно и подменит эти записи
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск