Ответы пользователя по тегу PHP
  • Знания Junior php разработчика?

    @Alzasr
    Твой уровень знаний, если ты все честно описал, достаточен для джуниора и мб даже больше. Как я понял, ты хорошо обучаешься. Можешь легко идти на вакансии джуниоров, а через полгода-год стать мидлом. Если ты живешь в Ижевске, обращайся, готов тебя взять, правда после общения с HR, к себе в отдел.
    Ответ написан
    Комментировать
  • Как добавить записи в БД?

    @Alzasr
    if (preg_match("/^[0-9]+$/",$t2)) { // собственно проверка на 0 на тариф2
    $i=2; $t2 = $t1;
    } 
    else 
    {
    $i=1; 
    }

    В этом куске кода у тебя определяется чему будет равен $i. А дальше цикл по $i, т.е. если у тебя 0 (вернее цифры) то $i = 2 и цикл выполняется 1 раз, а если у тебя есть не только цифры (в твоем случае это запятая), то $i = 1 и цикл выполняется 2 раза. Поправь регулярку (самый простой вариант добавь запятую "/^[0-9,]+$/", но не совсем корректно), хотя я не знаю, чего ты хочешь добиться.
    Ответ написан
  • Конвертация PHP в десктоп приложение?

    @Alzasr
    PHP реализует только бэкенд сторону, а десктопное приложение и фронтенд и бэкенд и хранение данных и все что необходимо. Генерация HTML на стороне PHP не относится к фронтенд, поскольку непосредственно отображением не занимается. Если ваш код не проходил кодировку в байт-код (например zend guard) или обфускацию, то лучше написать десктопное приложение с нуля используя алгоритмы PHP кода. Это будет дешевле, чем пытаться превратить PHP в десктопное приложение, хотя чисто теоретически это возможно, например скомпилить приложение с вебвьюхой, развернуть на десктопе вебсервер и PHP парсер (ну и все что нужно для веб-приложения). В этом случае ваше приложение будет выступать в роли браузера.
    Ответ написан
    Комментировать
  • Как хранить наборы статических данных (справочники) PHP или БД?

    @Alzasr
    Я организую каждый справочник как класс и там инкапсулирую метод хранения данных. На этапе разработки можно хранить массивом PHP, но в продакшене в большинстве случаев использую БД, а так как метод хранения инкапсулирован в класс, то переход от массива к БД безболезненен.

    //Dev version
    class ExampleDict{
        private static $_array = array(1=>'value1',2=>'value2');
        public static function getValues(){
            return self::$_array;
        }
    }
    
    //Prod version
    class ExampleDict{
        private static $_array;
        public static function getValues(){
            if(empty(self::$_array)){
                self::reloadValues();
            }
            return self::$_array;
        }
       
        public static function reloadValues(){
             self::$_array = app::db->queryAssoc('select `id`,`value` from `dict`','id','value');
        }
    
    }


    Метод app::db->queryAssoc('select `id`,`value` from `dict`','id','value) - взят от балды, не знаю чем ты пользуешься, должен возвращать ассоциативный массив 'id'=>'value'
    Ну и это один из вариантов, примитивный, написан из головы, через статические методы. В Yii я пользуюсь моделями ActiveRecord, там работа не со статическими методами
    Ответ написан
    2 комментария
  • Как передать через AJAX значение select и input type=text разом?

    @Alzasr
    в $.ajax в параметре data записываются передаваемые параметры см. jquery.ajax.

    Кода приведено не достаточно, чисто костыльное решение предложу. В замыкании
    function(query, process)
    {
        console.log(query);
        lang = $('#lang').val();
        return $.ajax(
        {
            url: intelli.config.baseurl + 'glossaries/add.json',
            type: 'get',
            dataType: 'json',
            data:
            {
                q: query,
                lang: lang
            },
            success: function (data)
            {
              return typeof data.options == 'undefined' ? false : process(data.options);
            }
        }
    }
    Ответ написан
    Комментировать
  • Какой true-OOP движок посоветуете?

    @Alzasr
    Wordpress - это cms и там ООП и не пахнет. Yii/Yii2 - наверно самые популярные в России фреймворки (думаю ты это под словом "движок" имел в виду). Здесь довольно хорошо ООП используется. Если тебе интересны все таки cms, то о MODx неплохие отзывы слышал, сам я cms стараюсь не использовать.
    Ответ написан
    3 комментария
  • Как сразу обновить данные на странице после их изменений?

    @Alzasr
    Делай редирект на страницу с которой пришел post запрос или на нужную тебе страницу, если у тебя не ajax приложение то это хорошая практика по защите от дублирующих post запросов.
    Ответ написан
    Комментировать
  • Можно ли запретить создавать объект в конструкторе этого объекта (php)?

    @Alzasr
    Запретить создавать инстанс класса (если класс не абстрактный) вообще нельзя, можно запретить создавать инстанс извне сделав коснтруктор закрытым (private), но в самом классе все равно можно будет создать. Можно конечно исключение выкидывать, но что будет результатом new я не проверял.
    Ответ написан
    Комментировать
  • Конфликт имен в PHP или нет?

    @Alzasr
    Обращаться к классам из глобальной зоны видимости можно через глобальный неймспейс \, т.е. \A
    Ответ написан
    Комментировать
  • Что быстрее парсинг XML или SQL запрос?

    @Alzasr
    В случае, когда удается хорошо представить в виде связанных таблиц, то я бы выбрал SQL СУБД. Если нужен быстрый доступ к большому объему данных по ключу, то можно посмотреть в сторону KEY-VAULE СУБД (например redis), если же данные не удается хорошо структурировать, то придется использовать документоориентированные СУБД (вроде MongoDB). Но просто xml-документ и использование что-нибудь вроде xpath я выберу только тогда, когда у меня выбора не будет.
    Ответ написан
    Комментировать
  • Хочу избавиться от портянок с именами переменных в PDO. Как?

    @Alzasr
    stdClass является итератором, т.е. ты можешь пробежаться по его свойствам с помощью foreach. Проверить наличие свойства у нужно объекта можно используя property_exists();
    Например у тебя получился класс $classFromPDO:
    $fooObj = new FooClass();
    foreach($classFromPDO as $name => $value){
        if(property_exists($fooObj,$name)){
            $fooObj->{$name} = $value;
        }
    }


    Примерно как-то так. Кстати, тут не важно, что у тебя в $classFromPDO объект или ассоциативный массив
    Ответ написан
    4 комментария
  • Как в OpenServer указать разные DocumentRoot?

    @Alzasr
    Я использую симлинки (см mklink) в папке sites openservera, и не важно где лежит проект.
    Ответ написан
    Комментировать
  • Какой кейс или паттерн лучше использовать для защищенного кода при блокировке таблицы?

    @Alzasr Автор вопроса
    Видимо придется использовать тот кейс, что я использую. С замыканием код будет сложнее читать, ИМХО.
    Ответ написан
    Комментировать