Задать вопрос
  • C каких PHP фреймворков лучше начинать изучение?

    @DarkByte2015
    Я бы советовал начать с Yii2. Первая версия уже не так актуальна, хотя все еще есть старые проекты на ней. Но зная вторую версию несложно разобраться и с первой. Kohana хоть и стар, но я начинал с него - самый простой наверное из существующих фреймворков. Но да, работы по нему наверное уже немного осталось, а так он проще чем Yii. А Yii однозначно проще чем Laravel (в нем больше абстракций). Ну и уж Zend это вообще тяжеловес - с него не стоит начинать. Мой выбор - Yii2 за простоту и распространенность по России.
    Ответ написан
    Комментировать
  • C каких PHP фреймворков лучше начинать изучение?

    Kohana3 (слышал что для новичков хорошо подходит) или, как вариант, Сodeigniter

    Не советую брать всякое старье.

    Выбирай из Laravel, Yii2, symfony.
    Ответ написан
  • C каких PHP фреймворков лучше начинать изучение?

    Bandicoot
    @Bandicoot
    Вась-программист
    Yii2 не так уж сложен и крупен. Советую начинать с него. Рынок развит нормально, работы хватает. Особенно на просторах СНГ.
    Ответ написан
    6 комментариев
  • Как выровнять центр картинки по центру блока div?

    если блок "определенных размеров", т е есть width и height то все просто
    .block { width: 100px; height: 100px; position: relative;}
    .block > img { 
    max-width: 100%; 
    max-height: 100%;
    position: absolute;
    z-index: 1;
    margin: auto;
    top: 0; right: 0; bottom: 0; left: 0;
    }
    Ответ написан
    Комментировать
  • Как изменить home на главная в Yii2?

    Нужно в конфиге приложения указать русский язык
    $config = [
    'language' => 'ru-RU', // язык приложения
    ....
    ];
    Ответ написан
    Комментировать
  • Как добавить Foreign Key в таблицу MySQL?

    1) Поля должны быть ключами. В таблице User поле level проиндексируйте (в phpmyadmin есть кнопочка с молнией "Index")
    2) Поля должны быть одинаковы по типу и по ограничениям. Если первое поле Integer с ограничением в 11 символов, то и второе должно быть Integer 11 символов.
    Ответ написан
    Комментировать
  • Как из массива объектов выбрать массив значений определенного стобца?

    qonand
    @qonand
    Software Engineer
    \yii\helpers\ArrayHelper::getColumn($models, 'id')
    Ответ написан
    Комментировать
  • Вывести кто онлайн через базу данных?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Сессии вообще про другое.

    Общая логика в таких случаях: заводим юзеру в табличке поле с datetime последнего действия на сайте.
    (Под действием понимаем в простом варианте - запрос любой страницы)
    Соответственно обновляем это поле.
    Все юзеры у кого время последнего действия > (now - nn секунд) считаются online.

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

    @realduke
    Ну и добавлю еще, что мнение, что Flask не подходит для больших проектов — заблуждение. Конечно, фразу «большой проект» можно по-разному трактовать, проект может быть с сильно большой кодобазой, а может быть довольно высоконагруженным, может еще какой-то смысл можно вложить, не знаю. В Flask есть лишь одно ограничение, которое нужно учитывать при разработке — это context local objects. Вот именно оно вносит некоторую сложность при наличии большой кодобазы, т.к. несколько объектов, определенных в github.com/mitsuhiko/flask/blob/master/flask/globals.py, являются глобальными, и для их использования их нужно явно импортировать, в результате можно легко выстрелить себе в ногу. Для высоконагруженных проектаов с умеренным объемом кода проекта я не вижу проблем. Связка nginx + gunicorn + приложение может выдерживать нормальные нагрузки даже на одной машине. Если проект сильно большой, то никто не мешает задеплоить несколько фронтэндов и использовать балансировщик.

    Flask — это лишь небольшая обертка над Werkzeug в виде класса, который выступает в роли callable объекта для WSGI, клей для Jinja, API для расширений, ну и несколько вкусняков в виде блюпринтов и сигналов. Кода не много и он легко читается.
    Ответ написан
    1 комментарий
  • Flask для больших проектов

    igrishaev
    @igrishaev
    Фласк — очень хороший фреймворк, удобный и понятный. Его главное достоинство и минус одновременно — Фласк накладывает гораздо меньше ограничений на разработчика по сравнению с Джанго, например. Поэтому продумывать структуру пакетов и файлов вам придется самостоятельно. Но это не так страшно, понимание приходит уже с первым проектом.

    Крупные проекты на Фласке могут разбиваться на составные части — Блюпринты. Это аналог приложений в Джанго. Блюпринт может иметь свое адресный префикс, свои шаблоны, формы, модели. С помощью них можно постепенно наращивать функциональность проекта.

    Правда, для Фласка меньше документации и готовых решений, но основные из них — SqlAlchemy для БД и WTForms для html-форм — работают очень хорошо, на порядок лучше Джанговских аналогов.
    Ответ написан
    Комментировать
  • Как перевести закодированное русское имя файла nginx-ом обратно в русское имя файла на стороне Django(python)?

    @Wexter
    а кто вам сказал что его nginx кодирует? это называется URL Encoding, преобразуется на стороне клиента. https://www.google.ru/search?q=django+url+decode
    Ответ написан
    Комментировать
  • С чего начать изучение php7 новичку?

    Котеров и Костарев PHP 7 в подлиннике
    Ответ написан
    Комментировать
  • Как отобразить номер телефона через Html helper?

    Самый простой вариант - создать свой класс, наследованный от Html и использовать его во всем проекте:
    <?php
    namespace app\helpers;
    class Html extends \yii\helpers\Html
    {
        public static function phone($phone, $options = [])
        {
            $options['href'] = 'tel:'.$phone;
            if (!isset($options['class'])) {
                $options['class'] = '';
            }
            return static::tag('a', $phone, $options);
        }
    }


    А дальше несколько вариантов:
    • Добавить еще несколько удобных методов и оформить все это в виде пакета composer, пример.
    • Сделать pull-request в yii2 или тому же Картику.
    Ответ написан
    5 комментариев
  • Кто пользуется редактором кода CodeLobster?

    Vadiok
    @Vadiok
    Веб разработчик
    Про must have редактор не скажу, но все же очень удобен PhpStorm, обладает огромным функционалом, поэтому многие им и пользуется.
    Мое мнение, почему CodeLobster непопулярен:
    1. Нет версии под Мак - думаю, что большинство, кто составляют более-менее популярные рейтинги пользуются маками.
    2. Если смотреть эту таблицу цен, то бесплатный вариант практически не обладает ничем выдающимся, lite за 40$ тоже слабоват.
    3. Отсутствие возможности ткнуть в папке проекта и тем самым создать новый файл - это вообще жесть.
    4. Нет стилизации кода под стандарт - тоже очень плохо.
    5. Очень мало плагинов - например кому-то важны миникарта, gist'ы, быстрый переход к месту, VIM-mode, возможность написать свой плагин - всего этого нет.
    6. Невнятная справка, древний сайт.
    7. Не понял, есть ли у него "go to definition", но, похоже - нет, без этого IDE - недоIDE.


    В общем, как я понимаю, подходит он только для тех, кто его с древности использует по привычке для своих личных проектов, т.к. для работы в команде он не подходит.
    Ответ написан
    Комментировать
  • Как правильно организовать внедрение зависимостей в Yii2?

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

    Возьмем например Ваш объект репозитория, его достаточно зарегистрировать в контейнере так
    Yii::$container->setSingleton('common\domain\Entities\User\Profile\Interfaces\Repository', // указываем интерфейс
        [ // указываем конфигурацию класса реализующего этот интерфейс
            'class' => 'common\infrastructure\Entities\User\Profile\Repository' 
        ], 
        [ // указываем какие данные необходимо передать в конструктор, в частности - экземпляр класса UserProfile
            Instance::of('common\models\ActiveRecord\UserProfile')
        ]
    );


    Контейнер соответственно сам проинжектит в объекты использующие common\domain\Entities\User\Profile\Interfaces\Repository объект common\infrastructure\Entities\User\Profile\Repository

    Сервис регистрируется аналогично:
    Yii::$container->setSingleton('common\domain\Entities\User\Profile\Interfaces\Service',
        [
            'class' => 'common\application\User\Profile\Service',
        ],
        [
            Instance::of('common\domain\Entities\User\Profile\Interfaces\Repository')
        ],
    );


    При создании сервиса, контейнер найден в своих данных объект соответствующий common\domain\Entities\User\Profile\Interfaces\Repository создаст его и проинжектит в сервис
    Ответ написан
    Комментировать
  • Как исправить при установки Themosis?

    Пусть поздно, но может кому пригодиться. В .json файле заменить "wpackagist.org" на "https://wpackagist.org"
    Ответ написан
    1 комментарий
  • Для чего нужен singleton?

    Adamos
    @Adamos
    Синглтон - прекрасный индикатор. Если человек задает вопрос, зачем он нужен - значит, этому человеку лень прочитать даже Википедию.
    Впрочем, есть утешительный вариант: этот человек просто еще не написал ни одной работоспособной программы, и изучать шаблоны проектирования ему тупо рано.
    Ответ написан
    3 комментария
  • Комментарии yii2 и pjax. Почему не обновляет контенер?

    qonand
    @qonand
    Software Engineer
    Честно говоря Вы не совсем правильно реализовываете задачу, с точки зрения архитектуры и чистоты кода. У Вас есть список комментариев и форма - так разделите функционал, не нужно делать все в одном экшене. Мало того что людям которые будут работать с проектом после Вас придется в этой куче кода копаться, так и Вы сами даже на текущем этапе нормально дебажить этот код не можете. Сделайте отдельный экшен отвечающий за отображение списка комментариев, и отдельный экшен принимающий данные с формы и сохраняющих их. И просто дергайте последовательно экшены. По коду который сейчас мне сложно сказать в чем ошибка, но судя по нашим обсуждениям в комментариях могу сделать вывод что проблема в сохранении нового коммента - либо он вообще не сохраняется, либо сохраняется с некорректными данными. Попробуйте пошагово продебажить сохранения.
    Ответ написан
    Комментировать
  • Как в jQuery можно использовать $(this) внутри call функции ajax запроса post после реакции на click?

    $(document).ready(function () {
    
    	$('.liketext').on('click', function () {
    
    		var self = $(this),
    			counter = Number($(this).text()),
    			dataid = $(this).attr('data-id');
    
    		var qdata = {
    			id : dataid,
    			cnt: counter
    		}
    
    		$.post('assets/components/ajax/like.php', qdata, function ( data ) {
    			self.html(data);
    		});
    
    		return false;
    	});
    
    });
    Ответ написан
    2 комментария
  • Как правильно записать код js?

    Bowen
    @Bowen
    Японский бог
    var $el = $("#sect_3 .item_1"),
        a = $(this).scrollTop(),
        b = $el.offset().top,
        c = 150,
        d = b - c;
    if ( a >= d ) {
        $el.addClass('marg_top_img');
    }
    Ответ написан
    3 комментария