• Опыт перехода из энтерпрайза в ...?

    Энтерпрайз - это вершина карьеры наемита. После этого идут лишь по двум направлениям: свое дело или долевой стартап какой-то (лучше всего опять же свой).

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

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Мне кажется, проще всего вам использовать docker/vagrant/и/п, т.е. виртуальное окружение.
    Вы вытягиваете ветку, стартуете под нее виртуалку, там разворачивается база, сидится, накатываются нужные миграции и вы спокойно работаете дальше. Примерно так.

    Советую глянуть в это сторону.

    В противном случае, вы либо будете тратить много времени на приведение БД к нужному виду, либо наплодите на dev-машине кучу баз под соответствующие ветки - что тоже так себе решение.
    Ответ написан
    2 комментария
  • Разве Composer бесполезен в 2017?

    search
    @search
    мама говорит что я особенный
    Композер - это, пожалуй, лучшее что произошло с пхп 5й версии.
    Валить или переубеждать тимлида - это по сути одно и тоже, если присмотреться. Просто демонстрация вашей неспособности брать на себя ответственность.

    Года 3 назад на моей прошлой работе в команду пришел очень толковый проактивный человек, который никого не стал переубеждать. Он просто стал делать правильные вещи. Без объяснений. И без приглашений. Коммитеть юнит тесты. Подключать линтеры. Деклайнить неудачные пулл-реквесты. В итоге он сам стал тимлидом где-то через год.

    Такие дела.

    Не у всех, правда, стальные яйца. Но за проактивность никогда еще не увольняли. Если вы уже создали пулл реквест, то "переубеждение" становится задачей тимлида.
    Ответ написан
    3 комментария
  • Разве Composer бесполезен в 2017?

    Ничему не научишься и никого не переубедишь.
    homer-run.gif
    Ответ написан
    1 комментарий
  • Как и где хранить накопившиеся файлы?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    гуглодрайв, доступ настраивается по аккаунту, по ссылке, по типу(ридонли/фулл). Что надо очень засекюрить - в архив под паролем. Есть возможность расшириться за приемлемые деньги. +Синхронизация с папкой на компе.
    Ответ написан
    Комментировать
  • Стиль кода или где предел его сокращения?

    Stalker_RED
    @Stalker_RED
    Этот код можно еще сокращать и сокращать.

    Тернарные операторы - это нормально. Возможно сейчас прибежит кто-нибудь с криками "ой, наши джуны не понимают их, поэтому не используйте", и будут бросаться тапками. Аргумент так себе.

    Несколько условий в одном if'е - это нормально. Другое дело, что эти условия аццки длинные и не читаются, от слова совсем. Можно было бы переписать как-то так:
    $is_admin = $name->permission('administrator');
    $is_section_available = $data[0]['section_available'];
    
    if ($is_admin || $is_section_available
      && ( // в том-же духе для остальных трех условий
       )
     ...


    Что не нормально - вот эта адская лапша с какими-то невнятными массивами. Проверка доступа привязанная к шаблонам(!) на основе какай-то вуду-магии (check_access_by_forum_group_id_and_theme_id, лолшто?).

    минутка диванной аналитики
    Подозреваю, что создание этого всего происходило примерно по такому сценарию:
    1. пишется что-то кастомное, дешево и "на позавчера" (в результате архитектура слабая)
    2. заказчик захотел чего-то странного, и тоже "срочно-припадочно", и это странное было интегрировано при помощи кувалды, проволоки и синей изоленты.
    3. прошло Х месяцев, разработчик понимает что он какбэ уже немножко в аду, но когда он заикается о рефакторинге, заказчик говорит что это не его проблема и оплачивать не хочет.
    (3б. бывают тяжелые случаи, когда разработчик не знает такого слова как "рефакторинг")
    4. разработчика это все достало, а заказчика не устраивает нытье разработчика и провалы по срокам
    5. проект передают по наследству вам. АХАХАХА!!111


    Чтоб такая фигня не происходила, давно придуманы стандарты разработки:
    всякие style guide'ы, PSR'ы и так далее. они мешают писать quick'n'dirty код, но в долговременной перспективе окупают себя на этапах роста проекта или на поддержке.

    Хинт: если вы заподозрили, что начальство не хочет правильно, а хочет быстро и грязно, то вам решать продолжать ли с ними работать.
    Ответ написан
    9 комментариев
  • Стиль кода или где предел его сокращения?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Вы полностью правы. Это - сумашествие.
    Это нечитаемо, умышленно запутанно. Писать код нужно в первую очередь для других людей, которые будут код сопровождать. А компьютеру одним пробелом больше/меньше - без разницы.
    Для того, чтобы в конец не сойти с ума - предлагаю вам изучить автоформатирование код в некоторых IDE. Сделал клик - и файл отформатировался под нужные вам стандарты.
    Очень помогает от таких лабиринтов.
    Хотя конкретно эти коды не спасет особо, тут вопрос чисто в запутанной логике коде.
    Ответ написан
    Комментировать
  • Как разобраться в ООП PHP библиотеке?

    @egormmm
    Борітеся — поборете!
    Чувак. Любой код (библиотека, пакет, функция) - есть некое обещание его производителя выполнить что-то ценное для тебя. Это описание должно давать название класса и его метода, который этот результат создаст. А дальше - это уже не твои проблемы как там внутри все устроено. Ты создаёшь объект, даёшь ему то, от чего он зависит, и вызываешь у этого объекта метод. Все!

    Представь телевизор. Его производитель обещает дать тебе возможность смотреть телеканалы, если ты подключишь антенну. Какая твоя задача как пользователя телевизора? Правильно! Вставить антенну и нажать на кнопку включения. Ты ведь не будешь залазить внутрь телевизора с тестером, и проверять как же там все устроено. Описание должно тебе сказать где кнопка включения.

    Если ты используешь пакет (модуль, библиотеку), в которой это непонятно сразу - то это не твоя проблема, а того производителя которые его создал. Просто лучше, вероятно, ничего не придумали, и приходится либо создавать самому, либо пользоваться таким Г...

    Код должен быть примерно такой:
    $tv = new Tv(new Antena);
    $content = $tv->on();

    Это и есть ООП.
    Ответ написан
    2 комментария
  • Как правильно настроить ЧПУ Woocommerce для товаров и блога?

    zorca
    @zorca Куратор тега WordPress
    Все что вам нужно, настраивается здесь:

    59e7a2a46a13d289836714.jpeg

    1.
    59e829592f4ff727464328.jpeg
    2.
    59e829a2692af504156271.jpeg
    3. Установить плагин Breadcrumbs XT. За настройкой видимо на фриланс, раз у вас простые операции вызывают дикое непонимание.
    Ответ написан
  • Почему time() выводит 01.01.70?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    date('d.m.y', strtotime($responce['date']));

    PS В слове "response" нет буквы "c".
    Ответ написан
    Комментировать
  • Стоит ли рассказывать про найденные уязвимости?

    @jkotkot
    режим сарказма
    Конечно стоит. Действия формально не выглядят как законные, но связываться никто не будет, если вы ничего не поломали.
    С вашими наклонностями вам нужно быть в резонансе с работодателем, поэтому стоит рассказать и посмотреть на реакцию. Если вас пошлют, то это будет неадекват, а с неадекватами работать не нужно.
    Ответ написан
    4 комментария
  • Как узнать сколько Php 7 скрипт жрет памяти?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Стандартные способы типа такого не работают уже? :)
    Ответ написан
    Комментировать
  • Что быстрее работает с json данными PHP 7.0 или MySQL 5.7?

    gobananas
    @gobananas
    finishhim.ru
    Вытащить средствами MySQL, так вдобавок сократите трафик между базой и приложением.
    Ответ написан
    Комментировать
  • Возрастет ли нагрузка, если ссылать несколько доменов на одну директорию?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    в целом, навскидку, разницы абсолютно никакой, если они были только не на разных устройствах раньше. А так как гладиолус виртуализация, то и вообще разницы 0, может даже небольшой профит по скорости за счет системного кеширования.
    Ответ написан
    Комментировать
  • Как подставить значение из ACF в gravity forms?

    zorca
    @zorca Куратор тега WordPress
    1. Изучаете хуки Gravity Forms.
    2. Находите нужный вам, к примеру: https://docs.gravityforms.com/gform_entries_column/ , (хук привел для примера, "ваш" еще надо отыскать)
    3. Пишите функцию для вставки ваших данных в нужный хук.

    Читайте документацию к используемому софту, там много чего интересного можно найти.
    Ответ написан
    4 комментария
  • WordPress + Gulp + PHPStrorm как все запустить?

    MedVedar
    @MedVedar
    e-commerce developer
    В PHPStrom есть поддержка и wp, и gulp.
    Ответ написан
    Комментировать
  • Как вызвать javascript из PHP кода?

    Eridani
    @Eridani
    Мимо проходил
    У вас тут дичь какая-то.
    Отловите событие сабмита, отправьте данные полей в пыху, в пыхе, если Вам нужно, отвалидируйте поля по своему усмотрению и отправляйте обратно ответ.
    Иными словами, посмотрите примеры форм с аяксом
    Ответ написан
    Комментировать
  • Насколько у меня правильный код ООП 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 комментарий