• Как исправить ошибку при использовании функции mail?

    @tester_toster
    Функция mail не может записать в лог в файл mail.log, потому, что его нет. Возможно и создать его не может так, как пользователь, под которым запускаются php скрипты - не имеет доступа к директории.
    php.net/manual/ru/mail.configuration.php
    Правьте конфиг
    Ответ написан
  • Возможно ли подгрузить только массив из внешнего файла?

    @tester_toster
    Это костыльно, но можно использовать ob_clean()
    Ответ написан
    Комментировать
  • Как вывести рандомно число без повторений?

    @tester_toster
    rand($x, $y);
    Если вас не устраивает последовательность 1,2,5,2,2,37,5,3,3,3 и.т.д, то советую почитать про случайные и псевдослучайные числа.
    Ответ написан
  • Как получить доступ к методу, который вызывает текущий метод?

    @tester_toster
    Добавлю к ответам остальных - еще посоветовал бы почитать про depency injection.
    Посмотрите, как приложение реализовано laravel.
    Там есть хелпер app(), который всегда вернет экземпляр приложения из контейнера "прямого singleton" - там нет, за три года разработки ни разу не увидел необходимости прямого singlton, все можно сделать через контейнер управления зависимостями.
    Если вы не используете фреймворк, или хотите написать сами, вот вам мой пример:
    точка входа: index.php
    -- Подключается автозагрузка классов, лучше composer - без этого сейчас писать моветон.
    -- Подключается файл с хелперами и нужными функциями: app() и.т.д.
    -- Создается обертка для request вида: $request = new request($_GET,$_POST,...) и.т.д.
    -- Создается экземпляр приложения: $app = new App($config), где конфиг либо массив настроек, либо в моем случае класс.
    -- $response = $app->handle($request), у меня просто echo $app->handle($request), присутствует немного магии
    -- Как выглядит метод handle:
    $this->instance(RequestContract::class, $request);
            try {
                $this->instance(RequestContract::class, $request);
                $response = $this->getPipeLine()->send($request);
    
                $this->afterHandle($request);
            } catch (\Exception $e){
                $response = app(Handler::class)->handle($e);
            }
    
            if(!$response instanceof ResponseContract){
                $response = $this->prepareResponse($response);
            }
    
            return $response;

    Объект request - регистрируется в контейнере и всегда будет отдаваться один и тот-же экземпляр.
    $this->getPipeLine - можете упростить, у меня это посредники (laravel style), в этом месте возьмите сразу работу с диспетчером роутера.
    Я использую обвязку для fastroute, так как это реальный проект, но написать на регулярках простой роутер несложно.
    Если роут не найден, либо была ошибка в коде в глубину - выбрасывается определенный exception, который обрабатывается в специальном классе и также отдает response с 404, 501 и.т.д. ошибками.
    Если роут найден, то он вызывается и возвращает данные.
    Я использую контейнер laravel с autowiring, в моем случае, если контроллер и метод найдены, все выглядит так.
    return $this->container->call(
                        [$this->container->make($handler[0], $routeInfo[2]), $handler[1]],
                        $routeInfo[2]
                    );

    Автоваринг - достаточно удобная штука на рефлексии, сама подставляет зависимости из контейнера, и если не ошибаюсь, в laravel появилась раньше, чем в symfony, свой контейнер похожий на laravel вышел 130 строчек, можете поискать в английском интернете по фразе: "php autowiring"- там есть статьи на эту тему.
    Сейчас меня заплюют, про то, что нужно взять готовый фреймворк и не писать костыли, но при 10млн просмотров нестатичных страниц в день, такое решение в разы обходит по скорости готовый фреймворк, так как лишнего ничего нет. Еще вам скинули ссылку на курс на ютубе Дмитрия Елисеева, может быть он и профессиональный разработчик, но видосики по 2 часа - это реальное издевательство, очень сильно разжевано, да, но очень долго, возможно отдельный редактор бы его спас. Я бы его лучше слушал вместо музыки. То, что ты именно не понимаешь - глазами не найти, лучше ищите статьи, желательно на английском, очень много разных заметок, смотрите исходные коды разных фреймворков - это даст вам понять, как все работает. Еще скажу о PSR - это не свод законов, а рекомендации, хотя первые - это реальное табу, нарушать нельзя, но все psr не поддерживает почти не один современный фреймворк. Так как стандартизация не всегда вяжется с удобством и скоростью, всегда приходится выбирать.
    P.S Это только мой взгляд, у разных людей - разные мнения и разный опыт.
    Ответ написан
    Комментировать
  • Можно ли писать форумы на Laravel?

    @tester_toster
    Смотря, что вам нужно.
    Если нужен быстрый готовый форум с типичным функционалом, phpbb или любой другой скрипт - ваш выбор. Если функционал будет нестандартный, важна скорость, не нужно лишнего, минимум кода, в общем, не нужен монстр - то можно написать и самому на laravel, любом другом фреймворке, или как иногда делают - на наборе компонентов (fastroute, request, di, template, qb ) добавляя по потребностям новые.
    Плюсы laravel: Авторизация есть из коробки, qb, di, blade.
    Добавить пару сущностей, контроллеров и самый простой форум готов. При необходимости дописывать нужный функционал будет легче, и быстрее, так как вникать в движок не придется. Скорость разработки не будет уступать написанию модификаций готовых движков, ибо не изучая движок, находя ответы в статьях "simple from, how make..." - рано или поздно поймете, сколько шлака наделали, и придется все переписывать, чтобы было правильно. Некоторые умудряются менять код движка, что замораживает апдейты, при этом некоторый код сам просит так, чтобы изменили его ядро, так как по другому определенного функционала не добиться, особенно этим грешит старый код.
    С теми, кто говорит про велосипед - не полностью согласен , так как это зависит от требуемого функционала. За последние пару лет правил код за "гуру невелосипедостроения", когда к обычной cms или магазину требовался нетипичный функционал - если новый код был написан как правильное расширение - уже было хорошо, по самому коду было видно - что кроме "how to make simple extension" люди не читали, так как для того, чтобы изучить достаточно большое ядро нужна даже не пара дней, а после изучения езе нужно, чтобы все и в голове отложилось.
    Также нужно учитывать, что сама модульность готовых движков будет отыгрываться либо на скорости, либо на возможностях модификации, либо на сложности, а может и на всем сразу.
    Когда создают что-то сложное на wp - охото убивать, да движок рабочий, миллионы сайтов, да, можно прикрутить шаблонизатор, laravel и.т.д., но зачем? Проще написать к laravel код для вывода статей.
    Работаю над сайтом с 8млн просмотров в день. Написан на dle - это самая распространенная в рунете cms, причем платная, но кто видел код - не спит по ночам. Также и начиналось - взяли готовое решение, раз доработка, ..., n доработка, а потом смотришь - пи**ец. Функционал уже не лезет, скорости не хватает, ядро все переписано. В итоге вся пользовательская часть переписана на фреймворк с горем пополам, ибо готовое решение положило свои особенности на архитектуру проекта. От решения осталась только админка, в которой мало чего осталось, не переписана просто по тому, что нет времени.
    Но если раньше борясь с архитектурой коробочного решения на задачу уходил день - теперь тратится час. Хотя тянули с переносом до последнего, год точно уже был напряг выдумывали костыли и.т.д.. Очень много денег бы было сэкономлено если бы перевели на фреймворк еще год назад, не говоря уже о том, что если бы при старте проекта начали сразу писать на фреймворке, да даже на голом php, так как при разработке было понятно, что бложик - 1% от функционала.
    Хотя своих решений тоже стоит избегать, был проект - написан программистом с нуля, весь код написан им, но опыта не хватило - архитектуру закосячил, ну там жесть была - ни автозагрузки классов, ни нэймспейсов, хотел модульность как в cms. Одному такое не написать, по крайней мере за стандартный срок проекта. В итоге - переписан на фреймворк. Взял бы готовые компоненты + типичную архитектуру mvc - не было бы проблем.
    Мой совет: смотрите по потребностям - времени - деньгам.
    Ответ написан
    1 комментарий
  • Как сделать работу скрипта без пользователя?

    @tester_toster
    можете попробовать pcnt_fork, если нужно что-то сделать, но чтобы пользователь не ждал. Но может быть установлено маленькое время работы скрипта. Еще есть fastcgi_finish_request. Отдаете пользователю данные, вызываете функцию, клиенту отдается ответ, а скрипт продолжает работать дальше.
    Но все-таки, если это нужно часто лучше использовать очередь, так как fork создает копию процесса.
    Ответ написан
    6 комментариев
  • Как проверить наличие поля в таблице?

    @tester_toster
    "SELECT COUNT(id) as count FROM users WHERE email = ? LIMIT 0,1"


    Получаете строку, через fetch смотрите значение count
    Ответ написан
  • Как показать контент под углом?

    @tester_toster
    Простой поворот div , внутри другого с поворотом в обратную сторону, перовое, что пришло в голову:
    https://jsfiddle.net/kyepumjt/
    Ответ написан
    Комментировать
  • Как решить проблему при локализации шаблона OpenCart?

    @tester_toster
    В такие моменты охото материться... Ну если вы не знаете такую базу, и не в силах логически размышлять - не лезьте, это не ваше...

    Написано почти русским языком - неопределенный отступ 0. В массиве нет такого элемента. Массив берется из метода getTopLinks, смотрите как он работает, он находится в этом же файле.
    Ответ написан
  • Замена класса на новый с помощью vue.js?

    @tester_toster
    Замените строку класса на переменную, и либо переопределяйте ее при надобности, либо наследуйте сам класс приложения/компонента
    https://ru.vuejs.org/v2/api/#extends
    vue-js.org/class-and-style-bindings
    Ответ написан
    Комментировать
  • Как сделать проверку на минимальную сумму?

    @tester_toster
    Поменяйте _POST на _REQUEST, если заработает, то не правильно указан метод формы.
    Ответ написан
    2 комментария
  • Как решить ошибку при установки пакета с помощью composer?

    @tester_toster
    Не хватает закрывающей скобки, прям в вашем прикрепленном коде:
    {
        "require": {
            "fxp/composer-asset-plugin": "^1.2.0"
        <b>}</b>
    }
    Ответ написан
  • Laravel 5.4 jwt RESTful API и базовый сайт?

    @tester_toster
    Попробуйте laravel Passport. Делаю на нем приложение laravel + vue + mobile app - полет нормальный. Авторизация в Auth автоматически происходит при отправке токена по апи роутам. Получаем токен, передаем его в header. Если сайт тоже работает с api - ничего передавать не нужно. При авторизации на сайте у пользователя в куку пишется зашифрованый токен и проверяется автоматически.
    Плюсы - родная авторизация, минимум правок.
    Ответ написан
    Комментировать
  • Php, какая цель использование регулярных выражений?

    @tester_toster
    Знаменитый fastroute работает на регулярных выражениях)
    Ответ написан
    Комментировать
  • Трудоустройство на позицию PHP?

    @tester_toster
    Для каждой задачи есть определенный инструмент, когда их несколько - выбирается по желанию разработчика.
    Большинство сайтов в интернете на PHP
    Большинство сайтов - простые, а следовательно разрабатывать их будут на php, так как готовых решений больше всего под него.
    Ну я бы и не сказал, что php не очень перспективный, php 7 довольно неплох.
    У меня аналогичная ситуация, но плюсов перехода на другой язык - например, на nodejs я не вижу, минус вижу только 1 - время и опыт для нового языка.
    Мое мнение - возможностей языка хватает с избытком, там где их не хватает уже лучше использовать c++, go, возможно потому, что c++ мне легко дался в университете и понравился)
    Ответ написан
    Комментировать
  • Массив, таблица бд или файловая система, что использовать?

    @tester_toster Автор вопроса
    Spout
    Расход памяти у библиотеки: 10-20мб,
    по времени дольше чем мое решение, а работает по второму принципу - запись shared в файл, но в каждый файл записывает не 1 значение а 10000, чтобы файлов получилось меньше, но время выполнения все-равно в разы больше, чем с массивом, что в моем случае пока не оправдано, в разнице 60мб - 20-40 сек или 20мб -20 минут выигрывает мое решение.
    Ответ написан
    Комментировать
  • Не работает php скрипт, в чем проблема?

    @tester_toster
    уберите равно перед fwrite и fclose - это функции
    Ответ написан
    Комментировать