Ответы пользователя по тегу ООП
  • Каково положение языка C# в IT-индустрии, в том числе в России, а также платформы .NET в целом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет, ,NET-чики голодают.

    Естественно я шучу, вакансии есть, востребованы как в WEB разработке так и в мобильной/десктопной разработке. Так же с появлением таких штук как Xamarin имеется возможность выйти и на рынки мобильных приложений (ну и конечно же Windows Phone).

    Да и миграция в Java чуть что не так уж и сложна будет.
    Ответ написан
    Комментировать
  • Как правильно организовать работу с сущностями?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1-ый вариант предпочтительнее, так как он решает поставленную задачу, удаляет фотографию из альбома.

    Но это не значит что сама фотография была удалена, это нужно делаталь отдельным степом. Альбом не должен знать как создаются или удаляются фотографии, он их только хранит, а точнее ссылки на них. Самый простой вариант - реализовать метод remove у класса Photo.

    $photo = new Photo($filePath);
    $album->addPhoto($photo);
    $album->removePhoto($photo);
    $photo->remove();
    Ответ написан
  • Дайте совет по написанию своей cms на ооп php

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с перспективой дальнейшего развития

    Сразу рекомендую отбросить эти наивные мечты. Вам придется пяток раз переписать это дело, если вы действительно только начинаете.

    "Правильной" CMS пожалуй и нету. Да и понятие "правильная" довольно абстрактно.

    Рекомендую написать свой фреймворк для начала. Тут больше простора для фантазии, и затем можно на базе оного уже делать CMS.
    Ответ написан
    2 комментария
  • Почему в Ruby нет абстрактного класса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    stackoverflow.com/questions/715604/why-do-dynamic-...

    По сути в ruby/python не нужны абстрактные классы. Во всяком случае так считали авторы языков, основываясь на идее, что в этих языках все проверки на существование методов происходят в рантайме, ну и можно в рантайме подменять методы и много чего еще творить с классами.
    Ответ написан
    Комментировать
  • PHP использования трейтов для разделения класса на части

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет, это не нормально. Нормально выносить в трейты какой-то bootstrap код, или прокси-код для реализации композиции методов, но именно реализацию классов - не ок.

    Вот пример, у вас есть жирный класс для управления сообщениями, профилем и т.д. Разделяете это на отдельные классы, один для управления только сообщениями, другой - только для профиля. Инджектите их в общий класс менеджер, и прописываете все интерфейсы (то есть к классам еще и интерфейсы нужно написать, в IDE можно просто выделить интерфейс класса и сохранить отдельно). В этом случае, нормально выносить методы в трейты, так как они просто проксируют вызовы в инстанс своего класса.

    Весь остальной код завязываете только на интерфейсы тех частей, что им нужны. Скажем какому-то классу не нужен менеджер профилей, ему только менеджер сообщений нужно. В этом случае можно только его инджектить.
    Ответ написан
    Комментировать
  • Чем плох этот код ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Даже не знаю с чего начать... Всем... Как минимум нету смысла в проперте opts, у вас и так переменные elem и parent будут доступны в родительском скоупе. Использовали бы хотя бы полноценные объекты, хотя опять же не понимаю смысла. Как-то слишком много кода...

    Что должно быть в closedDiv? И зачем такие сложности? Мне кажется плох не код, а подход.
    Ответ написан
    Комментировать
  • Как более правильно реализовать такой функционал в ООП (C#)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    - Создайте структуру для ваших этих справок
    - Храните их в ArrayList (так как длина заранее не известна)
    - Реализуйте класс, который будет хранить колекцию ваших структурок и реализовывать методы для поиска, возвращая коллекции. Внутри уже можно использовать linq для выборки.
    - Реализуйте сервис (класс пренадлежащий сервисному слою), который будет хранить настройки и обрабатывать коллекцию, подаваемую на вход.
    Ответ написан
  • Почему код возвращает значение лишь единожды?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я так понимаю вы хотели что бы praseIt вернул вообще все что нашел. Тогда вам нужно использовать preg_match_all.
    Ответ написан
    1 комментарий
  • Где необходимо применение ООП на Javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    модели, контроллеры, сервисный слой реализуются как классы (если можно так сказать, ибо в js нету классов, есть прототипное наследование у объектов)

    посмотрите проекты реализованные на backbone.js например. Но по сути вам будет проще вооружиться angular, где хотя бы вам не дадут разгуляться в плане написания своей системы классов и прочих велосипедов, который по сути в js и не нужны.
    Ответ написан
    Комментировать
  • Проектирование классов для работы с БД в PHP

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Модель никак не должна быть связана с логикой работы с базой. Как вариант — Модели — отдельные классы которые привязаны к репозиториям — по сути менеджерам записей. Каждый репозиторий зависит от класса db, который передается ему в конструктор.
    Как уже говорилось выше, что бы упростить себе жизнь для управления зависимостями можно воспользоваться реализацией DI. Например Pimple или, если чуть сложнее, PHP-DI или какой-либо другой.

    А вообще почему бы не заменить все это добро на уже готовую ORM?
    Ответ написан
  • Интернет-магазин и ООП?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    раздели систему на компоненты, исходя из задачи. Скажем, если исходить из паттрена MVC — должны быть объекты для работы с базой (Order, Client и т.д.), класс занимающийся репрезентативной частью и контроллеры (OrderController (Причем для пользовательской части можно наследовать от Controller а для админки AdminController), ClientController, CatalogController). Магазин можно грубо разделить как минимум на каталог и корзину. Есть еще доставка, оплата и т.д. Все эти части можно разнести по модулям (в случае доставки и оплаты — это будут контроллеры и модели)…

    Ну это так, примерно. Просто надо разбить все на эти самые подзадачи. Причем надо продумать как так разбить что бы изменения в одном компоненте не привели к необходимости менять что-то еще…
    Ответ написан