• Как выполнить dependency injection в resource?

    dark1112
    @dark1112
    Web developer
    В AppServiceProvider в методе register пропишите:
    $this->app->when(AttachmentResource::class)
              ->needs(S3Client::class)
              ->give(S3Client::class);


    Не забудьте прописать use для классов)
    Ответ написан
    Комментировать
  • Mongodb работает только с интернетом?

    @remzalp
    Программер чего попало на чем попало
    подозреваю, что имеет смысл руками запустить сервис монго.
    Ответ написан
    3 комментария
  • Как объективно протестировать производительность node.js и PHP в запросах к mysql БД?

    Как у нас на пхп. Пишешь строчки, выполняет по порядку. Сделал до конца одно, дальше. Как у нас с нодежс. Пишешь строчки и тоже по порядку, но не по такому порядку, как в php. К примеру у нас 2 обращения к базе. Они тоже будут идти по порядку, но почти одновременно, так как сразу после первого обращения к базе он не дожидаясь ответа обратится второй раз. Дожидаться ответа он уже будет в callback функции к обращению.

    PHP - спокойный тип, который спокойно выполняет задачи и не запутывается. Nodejs - карьерист амфетаминщик, который в любое свободное время (к примеру, пока ждет ответа от той же базы) будет выполнять другие свои обязанности.
    Ответ написан
    Комментировать
  • Глобальные и локальные переменные в процедурном стиле. Почему не работает?

    DevMan
    @DevMan
    так откуда им быть в getMenu то?
    php.net/manual/ru/language.variables.scope.php
    Ответ написан
    Комментировать
  • Как избавиться от повторяющегося кода?

    lxsmkv
    @lxsmkv
    Test automation engineer
    В пхп вроде есть mixins, называются traits php.net/manual/en/language.oop5.traits.php
    Ответ написан
    Комментировать
  • Какие папки закрывать в robots.txt в laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Папки app, routes, как и файлы .env (и прочие) в принципе не должны быть доступны из вне. Если у вас это так, то тут не роботс.тхт править надо, а руки тому, кто так веб-сервер настроил.
    Ответ написан
    Комментировать
  • Есть ли на сервере nginx и работает ли он?

    OnYourLips
    @OnYourLips
    Почему тогда grep не пустой?
    grep сам себя нашел.
    Ответ написан
    Комментировать
  • Покажите где найти информацию по работе с mongodb в telegram bot api на node js?

    rockon404
    @rockon404
    Frontend Developer
    1. Научиться работать с node.js
    2. Научиться работать с MongoDB
    3. Использовать полученные знания для работы с telegram bot api
    Ответ написан
    Комментировать
  • Как вывести массив с версткой?

    Stimulate
    @Stimulate
    могу
    $countries = [
        'Africa' => [ "Mammuthus columbi",
      "African buffalo",
      "Bongo",
      "Giraffe",
      "Zebra"],
        'Australia' => [ "Australian echidna",
      "Asian buffalo",
      "Camel",
      "Dingo",
      "Kangaroo"],
       
    ];
    
    foreach ($countries as $country => $cities) {
        echo '<h2>'.$country.'</h2><br/>'.implode(',<br/>', $cities).'.<br/>';
    }
    Ответ написан
    4 комментария
  • Как сделать 1,2,3,4 -> array(1,2,3,4)...?

    0xD34F
    @0xD34F
    preg_split('/[^\d]+/', $str)
    Ответ написан
    Комментировать
  • Как имитировать отправки форму через post php?

    customtema
    @customtema
    arint.ru
    Для начала - убрать из подписи слово "специалист" и декомпозировать вопрос. Ответ на поверхности: phpfaq.ru/newbie/na_tanke

    Если я вас все же совсем неправильно понял (что не отменяет предыдущих рекомендаций), тогда ответ - CURLом.
    Ответ написан
    Комментировать
  • Как передать значение полученное из БД в переменную?

    kimono
    @kimono
    Web developer
    $items = $wpdb->get_results( "SELECT count(*) AS `count` FROM `avt_posts` WHERE `post_type` = 'shop_order'" ); // изменённый запрос
    $item = reset($items);
    $x = $item->count;
    Ответ написан
    5 комментариев
  • Какую взять ORM для своего проекта?

    @D3lphi
    Возьмем ORM из двух популярных PHP-фреймворков. Первая будет Eloquent ("Родная" для фреймворка Laravel), а вторая - Doctrine (Одна из доступных ORM в фреймворке Symfony). Кардинальным отличием этих двух "систем" является то, что первая разработана на основе паттерна Active Record, а вторая - с использованием паттерна Data mapper. Чем же они отличаются? Приведу абстрактные примеры кода для первого и второго паттерна:

    Active Record:
    $user = new User(); // Создаем "сущность" нового пользователя.
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    $user->save(); // Сохраняем пользователя.


    Все, новый пользователь создан и находится в базе данных. Теперь, Data mapper:
    $user = new User();
    $user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
    $user->password = '123456'; // Устанавливаем пароль этому пользователю.
    
    $manager = ... // получаем объект менеджера (Например, из DI контейнера).
    $manager->persist($user); // "Скармливаем" новоиспеченного пользователя нашему менеджеру.
    // $manager->persis($user1); // Мы можем создать еще одного пользователя и уведомить менеджер об этом.
    // $manager->persis($user2); // И еще одного...
    $manager->flush(); // После выполнения этого метода данные отправятся в базу данных.


    Очевидно, первый способ куда проще. Но не все так просто. Дело в том, что паттерн Active Record нарушает принцип единственной ответственности (Single responsibility SOLID). И поэтому, в какой-то степени, может считаться антипаттерном. (Но это ни в коем случае не значит, что его не нужно использовать, для большинства проектов "хватит" за глаза). Наша сущность пользователя делает слишком много. Она не только представляет данные, но и еще работает с ними. В больших проектах это может усложнить поддержку кода. Data mapper, напротив же, разделяет представление данных в сущность (user) и работу с данными (manager, в данном примере. Также, за работу с данными отвечает репозиторий. Вы столкнетесь с ним, как только вам потребуется получить данные из БД (Doctrine)). В небольших проектах вы не заметите особой разницы. Разве что во втором случае увеличится количество классов. Так, в Eloquent вы создаете 1 модель, а в Doctrine - сущность и репозиторий.

    Все современные ORM включают в себя также, так называемые, query builder'ы. Они помогают отказаться от языка запросов, такого как SQL. Вы будете составлять запросы таким образом:
    $result = $qb
          ->select(['id', 'login'])
          ->where('id', '<>', 3)
          ->get();


    Собственно, query builder'ы помогают абстрагироваться от конкретной СУБД. То бишь, вы написали запрос 1 раз, а затем от того, какую СУБД вы используете будет зависеть выходной sql код. Генерация этого кода будет произведена абсолютно прозрачно для вас.

    Обе ORM имеют работать с отношениями. Вам нужно будет указать, как таблицы относятся друг к другу, а затем вы сможете удобно обращаться к связанным сущностям.

    Теперь конкретно. Так как вы только начинаете осваивать ORM, я бы порекомендовал начать с Eloquent. Она гораздо проще, чем Doctrine, да и более производительная, к тому же. Как освоите Eloquent, смело учитесь работать с Doctrine. Она обязательно должна быть "в копилке" ваших скиллов, так как является самой мощной в "мире" PHP.

    Успехов!
    Ответ написан
    2 комментария
  • Воспроизведение видео с сервера без возможности его скачивания

    @Eddy_Em
    > Как организовать их просмотр на сайте, максимально осложнив скачивание?
    Не надо пытаться этого делать: бессмысленная работа.

    // а вообще, этот вопрос напоминает: «если я только смотрю веб-странички трафик же не считается, ведь я ничего не качаю?»
    Ответ написан
    Комментировать
  • Как называется плагин для Sublime Text который автоматически добавляет комментарий в конце закрывающего блока HTML с классами и идентификаторами?

    @flareair
    Если вдруг еще не пробовали, то попробуйте Emmet.
    Он умеет вот так:

    Вводите
    .container|c
    Жмете Tab
    <div class="container"></div>
    <!-- /.container -->
    Ответ написан
    6 комментариев
  • Как устранить ошибку Cannot modify header information?

    PavelMonro
    @PavelMonro
    Ответ написан
    Комментировать
  • Какое железо выбрать для веб-сервера ( nginx, php-fpm, mariaDB )?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    У вас будет примерно 11 запросов в секунду (+ роботы, +бекапы, +cron), это хорошая нагрузка. Берите xeon 2630v3 (а лучше два), и 16/32гб памяти (зависит от контента), и диски парочку в raid1, а то и четыре в raid5 (1 под hotspare). По поводу контроллера для дисков, можно не заморачиваться и сделать softraid. потеряете немного, а выигрыш в плане восстановления колоссальный. По поводу памяти, берите максимум, который сможете. Захочется кешей разных для ускорения (mysql, nginx, и в битриксе), и это хорошо.
    Сервер сразу берите с запасом, так как через года два-три легче будет купить новый, чем купить памяти или найти второй проц, проверено неоднократно!
    Вообще-то я всем советую покупать всегда по максимуму бюджета, проект будет расти, захочется еще сайтов или каких-то свистелок, а просто так взять и добавить коксу возможности может и не быть...

    PS. Даже просто, вдруг захотите поставить другую CMS, ведь скорее всего захочется поднять ее рядом и сделать new.mydomain.com и old.mydomain.com. (мой случай)

    PPS. Вынес наверх
    Хотя, конечно, что-то я загнул, на 4 диска что раид10, что раид5 с хотспаре - одинаковой емкости, извиняюсь, каюсь и исправляюсь... Raid10 и только!
    Ответ написан
    3 комментария