• Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    BuzzyMan, Покажите код метода контроллера.
  • Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    Попробуйте запустить artisan serve с помощью только-что скачанной версии php.
  • Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    BuzzyMan, скачайте сборку php под win с офф сайта, запустите загруженный интерпритатор с ключом -a, загрузится интерактивная консоль, наберите в ней "echo exec('node -v');", если после этого exec заработает, то можно будет понять, что косяк в настройках php.ini, так как проверил у себя - все отработало на чистой сброке 7.2 с офф. сайта.
  • Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    Роман Соколов, я в шоке... Откуда такие профи берутся? Если выполнить exec('node') он естественно зависнет. Не догадываетесь почему?
    exec будет ждать окончания работы команды, но интерпретатор node сам не закроется, и exec будет висеть и ожидать, пока не наступить таймаут php.
    Если бы нода не была установлена, или cmd не мог бы ее найти, то exec бы завершился, а в ответе бы был текст с ошибкой - отсутствием исполняемого файла.
    Лучше воздержитесь от комментирования тем в которых не разбираетесь, чтобы не выставлять себя дураком.
  • Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    BuzzyMan, Ну да - установить полностью ноду на сервер, либо просто подключить v8js.so - какие костыли?) Другие команды проверяли выполнять, например - help? Запускали из под web сервера, пробовали запустить из cli?
  • Запуск NodeJS из PHP под Windows, в чем прикол?

    @Inclusive
    Роман Соколов, Не несите чушь. Если бы он не знал, но отрабатывал то в output попала бы ошибка из консоли...
  • Laravel. Что такое "eager loading" в двух словах на пальцах?

    @Inclusive
    Опять же не пойму зачем что-то везде менять, если в современных IDE, если вам очень захотелось поменять название метода/класса, есть рефакторинг автоматический =/

    Он не всегда работает правильно, есть исключения, все-равно нужно все просматривать глазами, менять в 1 месте и во многих - большая разница.
    И не вьезжаю, зачем что-то менять по проекту после, цитирую, "написания обновленной модели"? Чем инжект и (new User)->newQuery()->whatever() отличается от User::whatever() с этой стороны? Что там что там скоуп whatever IDE, понятное дело, не сможет отрефакторить, и я не вижу какие преимущества это вам дает.

    Это был ответ на вопрос человека, разумеется использоваться это будет по другому - проинжектили в конструкторе, вызываете через $this->model, вместо User в инжекте используется UserInterface.

    Не пойму о каких методах вы говорите. Об квери методах? Нет, они в квери-билдере eloquent'овском. Скоупы? Их так-же как-то либо моделька, либо квери-билдер вызывает. Релейшены? Другие методы, которые именно к реальным данным привязаны? Ну тоже не имеет отношения к этому. А еще каких-то методов там не будет. И не пойму что за filterParams - это уже либо к репозиторию, либо в скоуп.

    Под UserInterface вы прячете все как можно глубже, оставляя только публичные методы.
    A. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
    B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
  • Laravel. Что такое "eager loading" в двух словах на пальцах?

    @Inclusive
    Alex Wells, Немного плохой пример, посыл вы не увидели. Инжектите в сервис, это не запрещено?
    " вы инжектите инстенс модел, то есть конкретный ее экземпляр, а не инстенс квери-билдера/энтити-менеджера" - методы вы все равно будете держать модели, и работать вы будете с ее интерфейсом.
    interface Interface{
     public function filterParams($val):self;
     ...
    }

    Примерно в таком типе, и мы опять же вернемся к моему первому ответу - написав обновленную модель вы проинжектите ее в контейнер, а не будете менять по всему коду статику. Даже если вы пропишете в контракте отношения - лишним это не будет.

    User::with - это уже магия, staticCall вызывает, а query - существующий метод в классе.

    С вами все в порядке?
    <?php namespace Illuminate\Database\Eloquent;
    abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable
    {
    ...
    public static function with($relations)
    {
            return (new static)->newQuery()->with(
                is_string($relations) ? func_get_args() : $relations
            );
    }
    public static function query()
    {
            return (new static)->newQuery();
    }
    ...
    }

    Вы вообще разбираетесь в том, о чем говорите?
  • Laravel. Что такое "eager loading" в двух словах на пальцах?

    @Inclusive
    Alex Wells, смешной бред) Вы сейчас как раз магию и расписали, ибо это статика, что также как и фасады - является moveton, за которую нужно отрывать руки...
    Разбросаете таких соплей, и по всему коду потом будете прыгать при смене зависимости, ибо в конструктор вы эту статику не пропишете и не сможете инжектить с контейнера так:
    Class Repository
    {
       public function __construct(User $user)
       {
           $this->user = $user;
       }
    }

    Еще лучше бы было: не User а UserInterface, а в контейнере сделать бинд:
    $app->bind(UserInterface::class, User::class);
    Замен класса будет происходить 1 правкой.
    Если же вы предлагаете сделать так:
    $this->user::query();
    Что тоже возможно, но больно коряво, ибо посмотрев метод - можно увидеть, что это обертка над моим кодом.
    Нет, вы конечно можете написать фасад для этой модели, и при необходимости менять в нем зависимость, но это уже полная наркомания)