Ответы пользователя по тегу PHP
  • Ошибка запуска php.exe 0xc000007b что может быть?

    @serega_kaktus
    Программист-самоучка, фрилансер
    попробовать использовать более подходящую ОС
    Ответ написан
    Комментировать
  • Можно ли учить js и параллельно php?

    @serega_kaktus
    Программист-самоучка, фрилансер
    будет. Путаница всегда будет, когда работаешь с одним языком, потом переключаешься на другой. Но учить параллельно можно
    Ответ написан
  • Как собрать вручную сервер nginx+php 5.6+mysql на windows?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Я в этом деле бум-бум.

    Но при этом
    В интернете хорошей инструкции не нашёл.

    Как вы тогда оценивали качество инструкций, если вы в этом не понимаете? ))
    Ответ написан
    Комментировать
  • Как заставить правильно выводить нужный мне товар из бд?

    @serega_kaktus
    Программист-самоучка, фрилансер
    SELECT c.*, p.v_s as price, b.v_s as popularItem FROM `catalog` c 
        LEFT JOIN `info` b ON c.id=b.id
        LEFT JOIN `info` p ON c.id=p.id AND p.key='price'
        WHERE b.key='popularItem'
    Ответ написан
  • Как правильно избавляться от связей с ненужными свойствами родительского класса внутри класса-наследника?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Если у вас свойство $prop приватно, то объявите setProp тоже приватным. Так ни метод ни свойство не будут доступны в классах-потомках.
    Если же вы не знаете, будет ли свойство $prop использоваться в потомках, то лучше сделать его protected, как и метод setProp(). И не стоит тогда использовать final protected function setProp(), вы же не знаете, как это свойство может быть использовано в классе C extends B.

    PS Стараюсь использовать protected свойства, так как это дает больше контроля над данными потомкам. При этом, если потомку какое либо свойство не нужно, он к нему просто не обращается.
    Ответ написан
  • Объясните логику работы while с fetch_row в php?

    @serega_kaktus
    Программист-самоучка, фрилансер
    1. Кучи запросов нет. Запрос один и загружает все данные разом и хранит в своем кэше, а fetchRow выдает вам строки из кэша по одной.
    2. Потому что while выполняет выражение в скобках при каждой итерации, таким образом вы получаете каждый раз новую строку. foreach же первое выражение в скобках выполняет один раз, и получив значение этого выражения на каждой итерации только обновляет $dataKey и $dataValue. Если использовать foreach($db->fetchAll() as $dataKey => $dataValue), то будет работать так же, как while
    Ответ написан
    3 комментария
  • Какие задачи должен уметь решать web разработчик?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Разработчик должен уметь решать все адекватные и не очень адекватные задачи, которые ставит заказчик. Не зацикливайтесь на умении решать какую-то конкретную задачу. Вы не должны уметь создавать поисковую систему или систему бронирования. Что от них толку, если поисковая система чаще всего строится на готовых компонентах, а вероятность, что следующий ваш проект будет система бронирования - примерно 1 из 100.
    Разработчик должен уметь создавать систему, которая будет решать поставленную задачу, и которая имеет запас для расширения, чтобы маленькое дополнение от заказчика не заставило делать все с нуля. Должны знать ООП в идеале, так как сейчас это используется почти везде. Должны знать, что такое REST, SOAP, XML, JSON, HTTP, должны уметь настроить web-server так, чтобы сайт работал и можно было заняться разработкой (настройка продакшна, установка какого-то специализированного софта - уже задача админа). Нужно знать, какие технологии/библиотеки существуют и где применяются, чтобы случайно не писать одностраничное web-приложение на jQuery.
    Изучать досконально какие-то технологии, решать конкретные задачи просто так практически не имеет смысла. Никогда не знаешь, какой проект будет следующим и пригодятся ли эти знания.
    Ответ написан
    1 комментарий
  • Какова роль интерфейсов в ООП?

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

    Абстрактные методы в абстрактном классе играют ту же роль, что и интерфейс - описывают набор обязательных методов. Но при этом в абстрактном классе можно реализовать некоторые методы, которые в скорее всего будут одинаковы для многих потомков (хотя бы для 2х). Таким образом избегаем копипаста в коде
    Ответ написан
  • Ярлыки в Drupal?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Нарисовать и через темизацию поля вставить.
    Ответ написан
    Комментировать
  • Как сократить код для селектов?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Переписать функцию вот так и передавать id селекта как параметр не пробовали?
    function sumprice(id){
    		var calculate = 0;
    		var sum_main = document.getElementById("sum_main");
    		var maker = document.getElementById(id);
    		var pricem = maker.options[maker.selectedIndex].getAttribute("data-price");
    		var cpu1 = document.getElementById("kol_cpu").value;
    		calculate = cpu1*pricem;
    		var result = document.getElementById("price_cpu");
        	result.value = calculate;
        	document.getElementById('sum_main').innerHTML = result.value;
    	}
    Ответ написан
  • Как лучше возвращать ошибки при обработке данных?

    @serega_kaktus
    Программист-самоучка, фрилансер
    как раз запись в сессию чаще всего и используется. Непонятно, только где вы смешали html и php? Создайте шаблон для сообщений, в котором выводится либо сообщение, либо ничего. Шаблон подключите в нужном месте в шаблоне страницы
    Ответ написан
  • Как правильно реализовать в БД и PHP размеры одежды для интернет-магазина?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Вариантов много, все зависит от того, какие еще фичи завязаны на параметре "размер". Я видел в магазинах и как ваш первый вариант - но тогда нужно при добавлении товара в корзину сравнивать не только id товара, но и размер, чтобы не было замещения. Видел и ваш второй вариант - с одной стороны, он гибкий, можно добавить разные фичи, с другой стороны, немного переусложнен.
    Еще можно создать таблицу размеров, и таблицу товар-размер, при этом на карту добавлять товар и запись из таблицы товар-размер, чтобы они были уникальными.
    Ответ написан
    Комментировать
  • Система управления проектами

    @serega_kaktus
    Программист-самоучка, фрилансер
    openatrium.com/
    drupal.org/project/openatrium
    У клиента такая стоит. Все основные фичи Redmine есть, сам не настраивал, не скажу точно из коробки все работает или нет. Но основан на друпале, значит можно легко добавить модули
    Ответ написан
    1 комментарий
  • Имеет ли смысл полный рабочий день для программиста? Производительность труда?

    @serega_kaktus
    Программист-самоучка, фрилансер
    8 часов это нормально. Кто то даже легко по 10 часов работает. Особенно если работа в основном написание скриптов, а не разработка архитектуры сайта/приложения. Главное чтобы рабочее место было удобным и было где отвлечься на 10-20 минут от работы и отдохнуть
    Ответ написан
    1 комментарий
  • Дизайн клиента API. Как лучше возвращать ошибки от API?

    @serega_kaktus
    Программист-самоучка, фрилансер
    Может я ошибаюсь, но в Вашем примере все зависит от
    $apiFacade->getData()
    

    Если в этом методе может быть брошено исключение, то нужно их обрабатывать. Если ошибка и код всегда возвращаются как результат работы метода getData, то нужно использовать первый вариант. Если getData бросить исключение, то оно и в первом примере тоже будет. Только Вы его не обработали.
    То есть обработка ошибок АПИ в клиенте зависит от того, в каком виде АПИ возвращает ошибки в клиент.
    Ответ написан
  • Как избежать вложенного цикла и вообще по-человечески сделать?

    @serega_kaktus
    Программист-самоучка, фрилансер
    $intersect = array_intersect_key($new_data, $data); //массив с одинаковыми ключами
    array_merge($data, $intersect); //перезаписываем старые значения новыми
    $diff = array_diff_key($new_data, $intersect); //получаем массив с элементами, которых нет в $data
    


    Возможны ошибки, так как не тестил. Да и функции только что нагуглил. Но, думаю, позволят хоть как то упростить ваши циклы
    Ответ написан
  • Обработка и вставка json данных?

    @serega_kaktus
    Программист-самоучка, фрилансер
    for (var i = 0; i < json.length; i++) {
        var data = "some data" //может быть текст или html
        $('#' + json[i].week_num_return).append(data);
    
    }
    


    Тут очень хорошие доки на русском jQuery
    Ответ написан
    Комментировать