Ответы пользователя по тегу ООП
  • Как въехать в программирование (ООП, паттерны)?

    alexfilus
    @alexfilus
    Senior backend developer
    Я проникся ООП когда писал одну программулину в процедурном стиле и внезапно понял что не могу разобрать свой собственный код, написанный вчера. Потратил на рефакторинг 12 часов и после этого код стал больше похож на английский язык, чем на непонятный набор букв, точек, цифр и скобочек. Так что в идеале нужна практическая задача на чистом языке, без фреймворков.
    Раз речь о PHP, попробуйте написать свою ORM. Простейший построитель запросов для CRUD, но универсальный. Как минимум наследование точно поймёте.
    По паттернам я сейчас толкового курса сходу не нашёл, но не переоценивайте их значимость. Лучше почитайте (посмотрите видео) о том, что такое SOLID.
    Когда придёт понимание что такое наследование и зачем оно нужно, тогда можно и про паттерны почитать, но как по мне, реально интересен только Одиночка. Все остальные это просто правильные способы применить наследование, и выглядят довольно очевидными.
    Ответ написан
    5 комментариев
  • Что почитать и на чем потренироваться, не могу перейти от процедурного к ооп?

    alexfilus
    @alexfilus
    Senior backend developer
    Я по настоящему постиг ООП когда при доработках программы перестал понимать код написанный час назад.
    Понял что без него никак, отрефакторил, то что было на тот момент. В последствии ещё полтора года пилил ту прогу, но никаких проблем с читабельностью не возникало. Это к вопросу зачем он нужен.
    В изучении поможет только практика. Попробуйте не писать интерфейсов и прочих высокоуровневых штук пока что. Возьмите что-то простое. Например напишите свою библиотечку для работы с линейной алгеброй.
    2 класса - матрица и вектор. И работа с ними. Ввод, вывод, перемножение, транспонирование, поиск определителя матрицы.
    Добавьте статических методов, например генерацию единичной матрицы.
    Дальше можно написать решения СЛУ разными способами. Подумать как переиспользовать уже готовые методы.
    Останется наследование.
    Попробуйте написать свою, простую ORM. Набор базовых CRUD методов как абстрактный класс, и наследуясь от него классы для работы с конкретными таблицами.
    Если не увлекаться перфекционизмом, и универсальностью применения данных классов, этих 2 велосипедов будет вполне достаточно чтобы разобраться что к чему с ООП в любом выбранном вами языке.
    Ответ написан
    Комментировать
  • Пишет Class not found. Как правильно определить пространство имен?

    alexfilus
    @alexfilus
    Senior backend developer
    Сам по себе, от того что файл с классом лежит в папке с шаблоном, видимым не станет. Его нужно либо проинклудить, либо использовать автозагрузку классов php.net/manual/ru/language.oop5.autoload.php
    Либо применить битриксовые средства. Обычно классы лежат в модулях, но так как у Вас он наследуется от CBitrixComponent, предположу что для Ваших целей подходит компонент.
    https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Ответ написан
    Комментировать