Задать вопрос
  • Правильно ли я делаю, что все кроме работы с БД выношу в отдельные классы и потом внедряю как DI?

    @red-barbarian
    Это Вам надо читать про чистую архитектуру.
    Можно подходить из таких соображения класс который легко тестируется уже сделан правильно.
    Что нужно тестировать в классе? Только логику которую мы написали. Строго говоря на вход мы подаем объекты заглушки и тестируем только свою логику.
    Этот подход сочитается с принципом единственной ответственности, те класс выполняет только свои дела.
    Применяя DI правильно, у Вас получится такое разделение: компоненты - независимые переиспользуемые части и сборщики - те кто собирают компоненты в нужную систему и конфигурацию.
    Вы получите ясность и переиспользуемость. Плюс гибкость.
    Ответ написан
    Комментировать
  • В каких случаях использовать ООП?

    usdglander
    @usdglander
    Yipee-ki-yay
    ООП лучше юзать всегда. Конечно если нужно сложить пару чисел, то городить диаграмму классов смысла нет, но если что то более-менее серьёзное то лучше всё таки ООП. Всё то же самое можно сделать и без ООП, но вот ООП-подход позволяет писать понятный, сопровождаемый и надёжный код.
    Ответ написан
  • Выбор платформы для сайта подобие фл.ру?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Готовые cms не очень подходят для проектов с незаурядным функционалом. Надо брать framework, а какой не имеет особого значения. Если делать будете сами - тот что лучше знаете. Если сторонняя команда - тогда этот выбор лучше предоставить им. Если не знаете и не планируете привлекать знающих - лучше не начинать вовсе.
    Ответ написан
    Комментировать
  • Выбор платформы для сайта подобие фл.ру?

    Ahen
    @Ahen
    Универсальный дилетант
    Выбирать то, с чем умеет работать команда разработки.
    Преимущественно фреймворки.
    Брать цмс - ерунда какая-то, но вот ребята из WP сделали https://5bucks.ru/
    Ответ написан
    Комментировать
  • Насколько у меня правильный код ООП php?

    @D3lphi
    Здесь плохо всё, к сожалению.

    Начнем с того, что вы неверно наследуете классы. Почему у вас класс, отвечающий за подключение к базе данных является родителем класса, работающим с заказами? Наследование применяется, если можно сказать, что что-то является чем-то. Например, разработчик является работником; компьютер является устройством и тд. Здесь же у вас вообще близко такой логике не получится следовать. Вы должны передавать хотя бы объект для работы с бд через инъекцию, например, в конструктор. В идеале, нужно использовать паттерн репозиторий для работы с базой данных.

    Класс SearchOrder у вас не только выполняет запросы, но еще и работает с данными, хранит состояние этих самых данных, фильтрует данные (strip_tags()). Непорядок. Это все нужно разделять. У вас вообще получаются какие-то богообъекты, которые умеют во все.

    Вы каждый раз повторяете строки с подготовкой запроса, биндингом параметров, отправкой запроса и тд. Не думали, что неплохо бы было написать какую-нибудь обертку и выполнять запросы как-нибудь так:
    $result = $wrapper->select("SELECT * FROM `tablename` WHERE `id` = :id", ['id' => 5]);

    ?

    Вы вызываете connect() в методах. То есть, каждый вызов этого метода будет приводить к установке нового соединения с базой данных, даже если оно уже было установлено. Соединение с базой данных это достаточно дорогостоящая операция.

    Зачем вы используете свойства, если можно обойтись обычными локальными переменными:
    $this->orderID = (int) strip_tags($orderID);
    $this->column = (string) strip_tags($column);
    $this->value = (string) strip_tags($value);

    ?

    Почему вы стриппите тэги у идентификатора? вы настолько не уверены в том, что влетает в функцию:
    strip_tags($orderID);
    ?

    Если вы не используете php 7 и, как следствие, скалярный тайпхинтинг, то должны делать проверки на тип входящего аргумента. Если что-то не так с типом, бросаем исключение (А не приводим его к нужному)! Например:
    if (!is_string($arg)) {
        throw new InvalidArgumentTypeException('string', $arg);
    }

    Это в идеале. Вы не обязаны это делать, конечно же. Но вот такие проверки делают приложение безопаснее. Хотя, опять же, повторюсь, в 2017 нужно начинать новые проекты на php 7.1+.

    Ошибки не нужно выводить в этом классе. Вы должны поймать исключение базы данных, преобразовать ее в исключение предметной области и пробросить его дальше и где-то там, на уровне выше вывести информацию пользователю об ошибке. В mvc системе, например, это делается в контроллере.

    Кроме всего прочего, почитайте про стандарты оформления кода. Вы им не следуете.

    Вам пока рано писать такие велосипеды. Судя по всему, у вас нет опыта вообще. Посмотрите готовые решения: фреймворки, ORM, изучите их, хотя бы поверхностно разберитесь, как оно работает и уже потом пробуйте что-то сделать, исходя из полученных знаний.

    Желаю успехов!
    Ответ написан
    1 комментарий
  • Насколько у меня правильный код ООП php?

    customtema
    @customtema
    arint.ru
    $props = array(
         'orderID' => 'int',
         'orderID' => 'string',
         'value' => 'string',
    );
    
    foreach ($props as $value => $type)
    {
         $this->$value = ($type) strip_tags($value);
    }


    ;)

    А если серьезно - просто подсмотрите, как у других сделано.
    Ответ написан
    Комментировать
  • Насколько у меня правильный код ООП php?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    вообще не правильный, не должно быть наследования, инъекция зависимости должна быть
    Ответ написан
    Комментировать
  • Насколько у меня правильный код ООП php?

    GM_pAnda
    @GM_pAnda
    Бездельник
    Почитайте документацию про PSR-4, станет потом более понятно про все именования и тд
    Ответ написан
    1 комментарий
  • Онлайн блокнот для заметок?

    Afres
    @Afres
    Product Owner
    Может кому еще актуален ответ на данный вопрос, как и мне.
    У гугла новый хороший сервис https://keep.google.com/
    Есть так же приложение под андроид.
    Ответ написан
    Комментировать
  • Как сделать разлет картинок из центра по краям после задержки?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Здравствуйте.
    Если вы хорошо владеете javascript, то предлагаю воспользоваться "Зелёным Шоком"
    Этот фреймворк делает различные сложные анимации, может пригодится во многих интересных и сложных проектах, на ютубе есть много видео о нём, хоть и на английском, но у них полно примеров на codepen, так что - Welcome )))

    https://greensock.com
    Ответ написан
    3 комментария
  • Как осуществить такую анимацию?

    Eridani
    @Eridani
    Мимо проходил
    Particle JS
    Ответ написан
    Комментировать
  • Как осуществить такую анимацию?

    Finesse
    @Finesse
    Через <canvas>. Программирование производится с помощью JavaScript. Схема примерно такая:
    1. На то место, где должен быть эффект, помещается canvas, который занимает всю площадь места.
    2. В памяти генерируется набор случайных точек со своим вектором скорости.
    3. В каждом кадре анимации точки сдвигаются в соответствии в вектором скорости.
    4. В каждом кадре анимации точки отрисовываются на canvas. Дополнительно проводятся линии между всеми парами точек, между которыми расстояние меньше определённого значения.

    Есть готовая библиотека для создания таких анимаций.
    Ответ написан
    Комментировать
  • Какой шаблонизатор для PHP выбрать?

    zooks
    @zooks
    Frontend
    Подтверждаю, Twig хорош. Если вы используете Laravel, но лень прикручивать Twig, тогда Blade.
    Ответ написан
    Комментировать
  • Какой шаблонизатор для PHP выбрать?

    DevMan
    @DevMan
    Где можно выиграть по скорости (и нужно ли)?
    по скорости быстрее будет чистый пых.
    только быстрее он будет совсем незначительно: чтоб шаблонизатор стал узким горлышком надо очень сильно постараться набыдлить.
    иными словами - аспект скорости можно вообще не рассматривать.

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

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

    ну и если из шаблона можно дропнуть базу - это что угодно, только не шаблон. это к вопросу "нужен ли шаблонизатор".
    Ответ написан
    4 комментария
  • Какой шаблонизатор для PHP выбрать?

    rework
    @rework
    Помог ответ? В благодарность отметь его решением
    TWIG ( https://twig.symfony.com/ ) - хороший шаблонизатор. Использовал его когда-то при разработке своего фреймворка на PHP
    Ответ написан
    6 комментариев
  • Кто писал свою CMS?

    Epsiloncool
    @Epsiloncool
    Программер, веб-девелопер, гейм-девелопер
    Да, писал на базе PHP. Основной идеей была модульность и автоматическое отслеживание изменений.

    1) Какой системой вдохновлялись или брали за образец?

    Никакой, считал все остальные CMS "недосистемами", недостойными подражания.

    2) Писали ли к ней инсталятор или предполагался другой способ установки?

    Нет, предполагалось, что это PHP скрипт, который начинает работать сразу после установки.

    3) Какой использовали визуальный редактор для админки? Один из 2 известных, что-то другое, или свой?

    Сперва хотел написать свой собственный, потом понял, что не напишу конкурентноспособный до конца своей жизни и использовал TinyMCE.

    4) Была ли у неё какая-то специализация - магазины, визитки, лендинги, что-то ещё?

    Нет, модульность подразумевала полную универсальность.

    5) Разделяли ли ядро и дополнительные модули?

    Да, ядро было небольшим, весь функционал был (предполагался) в модулях.

    6) Предусматривалась ли какая-то система шаблонов? (юзали ли шаблонизатор или на php)?

    Да, в качестве шаблонизатора для страниц можно было использовать plain-php или smarty-шаблонизацию.

    - Ну и если есть ссылки на репозитории кидайте кому не стыдно показать если в открытом доступе у вас.

    Нет таких ссылок. На самом деле довольно большой продукт - моя собственная CMS (который я делал 4 года) был банально смыт в унитаз, а 8 сайтов, сделанные на его базе были переделаны под другую популярную CMS и ничего от этого не потеряли, а даже приобрели.

    Постфактум выяснилось, что желание разработать "свою собственную CMS" было вызвано нежеланием разбираться с уже существующими популярнейшими CMS общего назначения, а также ощущение себя "пупом земли", умнее, чем сотни и тысячи других людей.

    Нужно было просто посмотреть существующие CMS и использовать одну из них. Жаль потерянных лет.
    Ответ написан
    Комментировать
  • С чего начать при изучении symfony с нуля?

    Я начал с перевода статей можете почитать, если интересно. У Symfony хорошая документация, если какая-то специфическая задача то в гугле можно найти ответы на практически все вопросы + куча видео в youtube и конечно надо учить Doctrine ещё. Различия между 2 и 3 версией незначительны, обращайте внимание на совместимость бандлов с вашей версией Symfony. Удачи
    Ответ написан
    1 комментарий
  • С чего начать при изучении symfony с нуля?

    @pashalim
    Не так давно наткнулся на официальное демо приложение Symfony: symfony.com/blog/symfony-demo-1-0-0-released Интересно было посмотреть на практики самих разработчиков.
    Ответ написан
    1 комментарий
  • С чего начать при изучении symfony с нуля?

    alex_dm
    @alex_dm
    Лучше всего начинать здесь:
    https://knpuniversity.com/tracks/symfony
    первый курс бесплатный, если понравится, доступ к остальным 24$/месяц.
    Ответ написан
    Комментировать
  • С чего начать при изучении symfony с нуля?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Если с ООП на ты, то проблем возникнуть не должно.
    Для начала вам требуется понять саму архитектуру симфони.
    Далее уже переходить к пакетам которые в нее входят.
    В частности Symfony\Component\HttpFoundation, Doctrine, Yml, Twig
    Сервисы, что это и с чем едят.
    Создание кастомных реквестов для api.

    80% информации имеется в документации, остальное в гугл.
    Благо в поисковике множество информации на любые темы относительно симфони.

    Я бы еще определился, как вы собираетесь делать проект.
    SPA/Rest API или все в кучу по классической схеме симфони (контроллер->метод->сервис->ответ->твиг).
    Ответ написан
    Комментировать