Задать вопрос
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев
  • Оператор clone в php: как работает?

    ivankomolin
    @ivankomolin
    Это сделано для того, чтобы при клонировании объекта Person, одно из его свойств(которое является объектом) тоже было клонировано.

    Пример:
    $person1 = new Person;
    //Например $person1->address это объект со свойством id = 1
    $person2 = clone $person1;
    //Устанавливаем свойство id для объекта $person2->address
    $person2->address->id = 2;
    echo $person1->address->id; //выведет 1
    echo $person2->address->id; //выведет 2


    Теперь представим что public function __clone() {} внутри класса Person нет
    $person1 = new Person;
    //Например $person1->address это объект со свойством id = 1
    $person2 = clone $person1;
    //Устанавливаем свойство id для объекта $person2->address
    $person2->address->id = 2;
    echo $person1->address->id; //выведет 2
    echo $person2->address->id; //выведет 2

    Т.к. объект Address не был клонирован, мы обращаемся к одному и тому же объекту Address
    Ответ написан
    Комментировать
  • В чем разница между "in house", "remote", "freelance"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    In-house это не "работа у себя дома" а у работодателя, то есть в офисе. remote - удаленно но в рамках одного работадателя. freelance - на конкретный проект.
    Ответ написан
    1 комментарий
  • Существуют ли в природе реализации блокчейн на PHP от и до?

    @EverOne
    R&D Management since 2011
    procode: PHP - серверный язык (за незначительными исключениями), BlockChain - технология распределенных данных (баз) на клиенте(*ах). Вашими клиентами будут серверные машины?
    Если же хранить на уже готовом BlockChain'e, то уточните какой именно вас интересует - BitCoin, Etherium или еще что-то?
    Тот же Etherium вполне позволяет создавать смарт-контракты.
    Вот вам API для PHP. Дальше думайте сами.
    Ответ написан
    Комментировать
  • Существуют ли в природе реализации блокчейн на PHP от и до?

    @senefu
    Начните с блокчейн на русском языке, когда дойдет что это - попробуете на языке PHP (впрочем, зачем непонятно).
    Ответ написан
    Комментировать
  • Как подключить Яндекс.Кассу в Opencart?

    barsukovairina
    @barsukovairina
    Привет,
    1. Подскажите, пожалуйста, номер заявки на подключение.
    2. При заполнении в ЛК данных технической анкеты и выборе OpenCart, урлы автоматически должны заполнится.
    Инструкция по OpenCart https://kassa.yandex.ru/files/manual_y.cms_opencar...

    #Колбеки Opencart 2.0.x+
    checkUrl https://домен/index.php?route=payment/yamodule/callback
    paymentAvisoUrl https://домен/index.php?route=payment/yamodule/callback
    suceessUrl динамические
    failUrl динамические

    #Колбеки OpenCart 1.5.х
    тоже самое, но чек и авизо
    index.php?route=payment/yandexmoney/callback

    3. https обязателен.
    Ответ написан
    1 комментарий
  • Как заставить работать BxSlider в IE 6-7?

    @notveganmustdie
    IE6-7? А вы знаете толк в извращениях)
    Ответ написан
    Комментировать
  • Как реинициализировать slick slider в момент resize?

    Можно попробовать так
    var $slick = $('.js-slider-gift'),
        optionsDefault = {
            rows: 2,
            slidesToShow: 3,
            slidesToScroll: 3,
            arrows: true,
            infinite: false,
            dots: false,
            prevArrow: '<a href="javascript:void();" class="b-product-carousel-gift__arrow b-product-carousel-gift__arrow--prev carousel-control left"></a>',
            nextArrow: '<a href="javascript:void();" class="b-product-carousel-gift__arrow b-product-carousel-gift__arrow--next carousel-control right"></a>',
            responsive: [
                {
                    breakpoint: 1300,
                    settings: {
                        rows: 2,
                        slidesToShow: 2,
                        slidesToScroll: 2,
                    }
                }
            ]
        },
        optionsMin = {
            slidesToShow: 1,
            slidesToScroll: 1,
            infinite: false,
            mobileFirst: true,
            arrows: false,
            variableWidth: true,
            responsive: [
                {
                    breakpoint: 599,
                    settings: {
                        slidesToShow: 2
                    }
                }
            ]
        };
    
    $(document).ready(function() {
        $slick.slick();
        setOptionsSlider();
    });
    
    $(window).resize(function () {
        setOptionsSlider();
    });
    
    function setOptionsSlider() {
        var width = window.innerWidth || document.body.clientWidth,
            options;
        options = width < 960 ? optionsMin : optionsDefault;
        $slick.slick('slickSetOption', options)
    }
    Ответ написан
    9 комментариев
  • Как сделать вывод товаров на главной странице OpenCart?

    gohdan
    @gohdan
    Системный администратор
    Для тех, кто, как я, придёт сюда из поисковика - в OpenCart 2.0.3.1 рекомендуемые товары по умолчанию уже выводятся на главной странице, нужно зайти в модули - "Рекомендуемые > Featured - Home Page" -> кнопка "Редактировать", и там будет список товаров.
    Ответ написан
    1 комментарий
  • Где хранятся задания cron?

    marrk2
    @marrk2 Автор вопроса
    Правильный ответ /var/spool/cron
    Ответ написан
    6 комментариев
  • Как можно задать css стиль для тега option?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Ответ написан
    Комментировать
  • Как не растерять навыки за время отсутствия?

    @asd111
    За месяц ничего не будет не бойся. Я не программировал несколько лет. Навык остается. Потому что всё равно конкретный код вызова того или иного метода или работы с классом приходится смотреть в документации. Это так называемый google driven development. Это нормально т.к. наизусть запомнить названия всех функций нереально.
    Главное алкоголь не пей и не кури. Мозг программиста больше всего страдает именно от них, и ещё от порнографии и игр, т.к. порно и игры мешают думать. Есть даже такая мудрость, что человеку мешают думать в нужном направлении злость, мысли о деньгах, мысли о сексе, алкоголь, сигареты
    Ответ написан
    9 комментариев
  • Как создать фильтровать товары в opencart?

    parmactep
    @parmactep
    1. get-запросы "ловятся" через методы класса соответствующего контроллера. Сумбурно немного звучит. Попробую обьяснить на примере.
    Запрос /index.php?route=product/category&path=20 вызывает метод index класса ControllerProductCategory в файле /catalog/controller/product/category.php
    Параметры запроса помещаются в свойство request этого контроллера
    2. Документация по OpenCart
    Очень скудная. Слышал что есть более подробная, но стоит $25 и прозрения после чтения не происходит)
    Разработчики OpenCart считают что их код абсолютно интуитивно понятный и в объяснении не нуждается)
    3. Приблизительно:
    Вам необходимо делать урл вида /index.php?route=product/filter&manufacturer&lowprice=20&hiprice=100&color=red (или немного иначе если у вас ЧПУ)
    Обрабатывать его в файле /catalog/controller/product/filter.php
    Там некоторые фильтры есть стандартные. Вам остается только добавить свои.
    Ответ написан
    1 комментарий
  • Какие отличия nav от menu в HTML5?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    В спецификации написано, что nav может быть использован не один раз на странице. Например, навигация по сайту и навигация по странице.
    Меню в html5 имеет совершенно другой смысл, никаким образом не связанный с навигацией. Он служит для контейнера команд, т.е. используется также, как в контекстном меню, меню команд.
    Для навигации, если хотите использовать один из двух вариантов, следует использовать nav. Для списка команд в каком-нибудь приложении: menu.
    Ответ написан
    Комментировать
  • Как Вы понимаете junior, middle (developer), senior и есть ли принципиальная разница этих понятий в вебе, эмбедде, геймдеве и других программиннгах?

    FirstX
    @FirstX
    .net developer
    Эти понятия, как и многое другое, пришло с запада. В России, знаю на примере текущей компании, есть разделение на "Инженер-программист 3й категории", 2й категории и высшей категории (ведущий инженер-программист). В нормативных документах, в том числе и в рамках должностной инструкции описано, что например инженер программист 2й категории - это сотрудник с высшим образованием по специальности и таким-то количеством лет опыта. Это формальный подход, на практике мне дали 2ю категорию существенно раньше, чем "положено".

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

    Может ли использоваться с целью занижения зарплаты? Может. Мое мнение, что в данном вопросе важно не "звание", а то как твой опыт и твои навыки покрывают запросы чужого бизнеса. Отсюда и вытекает твоя стоимость на рынке. И где-то будучи джуниором можно получать больше, чем мидл в другом месте, зависит от предъявляемых требований. Хочет ли работодатель купить дешевле тот же скилл? Хочет. Есть компании, где критерии формализованы, в рамках этой компании рост более прозрачен.

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

    Это все лично мое мнение, не претендующее на истину)
    Ответ написан
    Комментировать
  • Apache, NGINX, PHP-FPM - что лучше?

    zizop
    @zizop
    Наши тесты показали значительное ускорение при nginx +php5-fpm по сравнению с apache+mod_php. Пора уже использовать прогрессивные технологии, а не ставить по старинке Apache. Вот наш рецепт:
    — собственно nginx+php5-fpm
    — apc для локального кэша, memcached для сетевого
    — бд Percona XtraDB, потом перешли на MariaDB+XtraDB
    — ssd для оси, выключить журналирование, включить trim
    — ежедневный backup на hdd, недельный через сеть.
    В общем данные мероприятия существенно увеличили производительность.
    Ответ написан
    3 комментария