Нужно ли учить ООП (PHP)?

Не хочу никого обидеть и устроить срач
Прощай ООП, недавно начал изучать PHP, основы подтянул, добрался до ООП, но статья меня пугает, так нужно ли учить ООП или функциональное программирование: Welcome?
  • Вопрос задан
  • 2784 просмотра
Решения вопроса 2
T_y_l_e_r
@T_y_l_e_r
Надо Федя, надо...
Ответ написан
riky
@riky
Laravel
посмотрите на рейтинг статьи, и первые комменты например, чтобы развеять сомнения.

и см вывод к чему пришел автор "функциональное программирование"...
в рамках пхп все таки ООП еще будет долго жить.

ФП больше для асинхронных языков, JS, NodeJS и тд...
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
но статья меня пугает, так нужно ли учить ООП или функциональное программирование: Welcome?


ООП учить не нужно. Большинство вроде как и учат но выходит плохо. ООП надо понимать. Причем это скорее именно проектирование нежели программирование.

Начать стоит со структурного программирования в принципе (ООП лишь развитие этих идей), разобраться с тем, чем все же плохи глобальные переменные, в том что намного проще жить когда не нужно учитывать время при разработке. О том как делать декомпозицию при помощи функциональных абстракций, структурировать код. Понятие связанности, управления зависимостями. Можете почитать послание Дейкстры народу. Все же надо понимать откуда у всего хайпа ноги растут а не статьи писать разобравшись в вопросе лишь частично.

А так... скажем так, использовать классы вам придется. В PHP другого способа изолировать состояние нет. Просто не надо думать что ООП про наследование (о чем большая часть статьи), оно про изоляцию состояния, взаимодействие объектов/модулей посредствам "общения" (tell don't ask, закон деметры), про позднее связывание (возможность подменить реализацию)... А не как не про классы. Классы лишь способ. Инкапсуляция, полиморфизм, наследование - все это было до ооп. Разве что наследование в Simula67 сделали в более удобном виде. Но все же считать этот язык объектно ориентированным не стоит. На его основе потом Страуступ плюсы сделал, и так же не думал делать объектно-ориентированный язык. Он хотел структурировать процедурный Си, задать так сказать культуру разработки. Менять парадигму он не собирался.

В основном проблема нынче в том что под ООП люди понимают только классы, паттерны и все. А зачем его придумывали и чем оно отличается (если отличается) от старого доброго процедурного - это уже не вкурсе.
Ответ написан
Комментировать
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Если быть г...нокодером, то ненужно ))
Ответ написан
Комментировать
Rou1997
@Rou1997
Чтобы не было "срача", нужно определиться с целью и к ней идти, все инструменты исходя из нее выбирать если этого не сделать, то без "срача" никак, проверено.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Так весь код на пхп ооп или процедурный
Ответ написан
Комментировать
Vestail
@Vestail
Software Engineer
ИМХО для меня ооп это то, что делает программирование действительно инртереным.
Программировать в процедурном стиле скучно:)
Ответ написан
Комментировать
Acuna
@Acuna
Заполнил свой профиль
Статья - неслабый вброс для поддержки активности в своем блоге, как это любит делать Mail.ru, когда писать дельного нечего, а надо.

Учить надо хотя-бы потому, что это удобно. Приведу наглядный пример: у Вас есть метод для подключения к чему-либо (к какой-то БД, FTP, не важно). Он называется query (). Класс с этим методом Вы можете определить при запуске Вашего проекта (например, в index.php). Например, так:

$db = new DB ([
  'server' => '127.0.0.1',
  'user' => 'root',
  'password' => '',
  'database' => 'my_db',
]);

Как видите, этот класс инициализируется с нужными настройками. При его создании в методе __construct () Вы можете инициализировать само подключение к БД, выбор нужной БД и т. д. И уже в остальных методах Вы можете использовать эту переменную ($db), вводя ее в любой метод с помощью оператора global. Например, $db->query () выполняет запрос в БД (помните, что мы уже инициализировали подключение к БД при создании класса для работы с ней, поэтому мы можем выполнять запросы в нее из любого места Вашего скрипта). Я уж не говорю о том, что при этом методы могут иметь одинаковые названия в разных классах, но Вы всегда будете знать из какого экземпляра этот метод, и чем он занимается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы