Ответы пользователя по тегу Laravel
  • Из-за чего возникает ошибка при загрузке картинки Laravel?

    @djay
    Испозуй абсолютные пути, вместо относительных (про разницу - загугли и почитай)

    Должно быть так

    ..->save(__DIR__ . '/uploads/img.png');
    Ответ написан
  • Почему то в foreach не видит переменную?

    @djay
    foreach($Tasks as $task):

    Не $Tasks a $tasks
    Ответ написан
    Комментировать
  • Как сгенерировать заданное количество промокодов?

    @djay
    Подскажите что не так?


    Забыл импортировать модель

    use app\Promocodes; // Или где там лежит эта модель
    Ответ написан
    7 комментариев
  • Стретила такую конструкцию, что означает?

    @djay
    Это коротка запись:

    $self = new static();
    return $self->getData();
    Ответ написан
    Комментировать
  • Где прописывать правила валидации?

    @djay
    В Laravel - в контроллере
    В Yii - в модели
    Ответ написан
  • Как сделать такой фильтр на laravel 5.2 с сохранением состояния?

    @djay
    Вообще такие компоненты (Grid View) есть во всех фреймворках, где-то прямо из коробки, где-то устанавливаются отдельно.

    Используй этот пакет для Laravel 5.x
    Ответ написан
    Комментировать
  • Статический или не статический метод?

    @djay
    Статика - это глобальное состояние. Статический метод или статическая переменная абсолютно ничем не отличаются от глобальной переменной, потому что, ни статика ни глобальная переменная не были переданны в качестве аргументов нигде и никак, а значит поступают из глобального пространства.

    Чем статика может быть опасна?
    Представь, что ты пишешь утилиту для загрузки изображений. И вот наступил момент, когда нужно указывать параметры обрезки для превьюшек. Со статикой это может выглядеть так:

    public function upload()
    {
         $width = Config::read('width');
         $height = Config::read('height');
         // .. Do upload..
    }

    (На заметку CakePHP кишит такими подходами)
    Проблемы такого подхода?

    1. Нужно знать и быть точно уверенным, что статичный класс Config, был где-то там далеко инициализирован. А вдруг он не был инициализированным?

    2. А что если ты решишь сменить источник конфига? Например читать, это все не из класса `Config` а откуда-нибудь из REST? Придется все переписывать, затем опять тестировать. Эта проблема известна как сильная связка.

    3. Попробуй написать юнит тест для такого, без хаков и изращенных костылей. Ведь для того чтобы протестировать этот метод, нам нужно где-то там в глобальном пространстве инициализировать `Config`, затем убедится что он работает.

    4. Скрытые зависимости.

    Например инициализуруя класс, в случае статики:

    $uploader = new Uploader();
    $uploader->upload(...);


    Ты и твои пользователи не видят какие у класса зависимости и от работы чего вообще он зависит. Проблема заметна особо, когда ты пишешь библиотеку или компонет.

    Но тогда почему такие популярные фреймворки как Yii или Laravel полностью покрыты статикой?

    Для того чтобы понять какие последствия несет статика, попробуй воспользоватся хоть одним компонентом Yii фреймворка отдельно. Например, если тебе нужна только CAPTCHA ты не сможешь её вытащить оттуда не переписав почти весь компонент, потому что везде внутри присутвует глобальное состояние, в виде `Yii::$app->`. То есть чтобы воспользоватся только капчей, придется подключать весь фреймворк и все его внутренние механизмы, когда это абсолютно не нужно.

    Что касается Laravel, то статики там меньше, поскольку некоторые компоненты, вроде Eloquent могут использоватся по отдельности. Статика в ларе, она существует как обёртка, но не как реализация, во многих местах в отличии от Yii.

    И отвечая почему - потому авторов либо их не заботит кристально чистая тестируемость, либо слабая связка, ну или потому что опыта не хватает чтобы писать чистый и поддерживаемый код.

    Вообще посмотри, как задачи решаются в Zend / Symfony
    Там почти везде все зависимости передаются в качестве аргументов, что есть хорошо, слабо связано, и тестируемо.
    Ответ написан
    5 комментариев
  • Фильтрация данных в Laravel?

    @djay
    Все что касается построения динамических SQL-запросов, должно строго находится в моделе. В контроллере, должны только передаватся переменные самого запроса в эту самую модель.

    Всю эту простыню, нужно просто вынести в модель.

    public function filter()
    {
         $validator = Validator::make(...);
        
         if ($validator->fails()) {
             // Ошибка
         } else {
             
             $data = Input::get();
             $result = Model::applyFilter($data);
    
             return View::make(..);
         }
    
    }
    Ответ написан
    Комментировать
  • Стоит ли изучать Symfony?

    @djay
    Итак, обо всем по порядку:

    1. Дописать новую фичу можно в любой системе и в любом фрейморке (ZF/Laravel/SF/Cake/CI/Phalcon ... ), даже если все было спроектировано не правильно изначально. Единственно на это уйдет чуть больше времени и нервов.

    2. Симфони второй по востребованости в СНГ, после Yii - согласно hh и brainstorage. Остальное - ZF/Laravel. В Европе/США - наоборот, ZF2/Laravel, потом Symfony, а Yii вообще редко попадается.

    3. Да Ларавел работает быстрее и есть меньше памяти. Это потому в симфони очень много слоев абстракции. Но как правило, память дешевая и многие могут её себе позволить. То есть в основном никого не волнует какие-то 9-10 лишних МБ памяти.

    4. Симфони - не для слабаков. Его API гораздо сложнее всех остальных. Нужно уже знать и понимать DI контейнеры, принцип разделения концепций и аналогичное. Для работы с Yii/Laravel - знать этого не нужно, поэтому каждый второй школьник Yii/Laravel программист (образно говоря).

    5. Не встречал адекватных мануалов для новичков на русском языке, к сожалению. Могу посоветовать только англоязычные:

    Symfony2 Registration and Login
    Creating a blog in Symfony2

    Пройдя эти мануалы, уже сможешь писать приложения.

    6. В любом фрейворке, тебе нужно будет в основном только это:

    - Роутер / контроллеры
    - Компонент валидации форм
    - Слой над базой данных

    И все! Фремворк предоставляет только инструменты, не более того. Т.е фреймворк - это не цель, а средство.
    Ответ написан
    Комментировать
  • PHP Development. Как осовременниться?

    @djay
    Композер - это всего лишь утилита, которая достаёт из чужого (или своего) репозитория какой-либо компонент. Затем:

    1) скачивает его
    2) ложит в папку с вендором
    3) автоматически регистрирует автолоадер (PSR-0/PSR-4)

    И делается это все одной командой. Можно конечно делать это всё вручную, но очень не удобно (а что если несколько библиотек / компонентов нужно подключить? - волокита и геморой). Причина популярности композера именно в этом. Например Laravel - он использует компоненты Symfony, следовательно при инсталляции он будет брать те самые компоненты с репозитория Симфони.

    Здесь главное уловить суть - это сведение подключения сторонних компонентов и библиотке к одной команде. И да, там всего лишь простых несколько команд для этого.

    Вдаватся в дополнительные подробности (например в синтаксис composer.json), здесь не имеет смысла, т.к это все есть на официальном сайте.
    Ответ написан
    7 комментариев
  • Какую бесплатную cms/фреймворк использовать для интернет-магазина?

    @djay
    Рекомендую Magento - гибкий, много документации, все нужды для магазинов - там есть. А хороший магазин ты за год не напишешь, даже на Yii 2
    Ответ написан