Ответы пользователя по тегу Программирование
  • Как отследить вызов метода объекта PHP?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Можно и так. Статические методы сделайте private/protected. Используя PHPDoc укажите какие именно публичные методы доступны для вызова. Метод __callStatic будет перехватывать попытки вызова закрытых методов, вы сперва проверите наличие этого метода, потом сделаете нужную вам инициализацию и потом лишь передадите управление этому методу.

    Вот вам пример. Но я бы не советовал его использовать в реальных приложениях - он плохо пахнет.
    /**
     * @method static mixed one()
     * @method static mixed two()
     * @method static mixed three()
     */
    class Auto
    {
        protected static $instance;
    
        public static function __callStatic ( $name, $arguments )
        {
            if ( static::$instance === null ) {
                static::$instance = new static();
            }
            $method = "static_{$name}";
            if ( method_exists( static::$instance, $method ) ) {
                return call_user_func_array( [ static::$instance, $method ], $arguments );
            }
            throw new BadMethodCallException( '...' );
        }
    
        protected function static_one ()
        {
            echo 'Вызов метода ' . __METHOD__ . PHP_EOL;
        }
    
        protected function static_two ()
        {
            echo 'Вызов метода ' . __METHOD__ . PHP_EOL;
        }
    
        protected function static_three ()
        {
            echo 'Вызов метода ' . __METHOD__ . PHP_EOL;
        }
    }
    
    Auto::one(); # Вызов метода AutoCreate::static_one
    Auto::two(); # Вызов метода AutoCreate::static_two
    Auto::three(); # Вызов метода AutoCreate::static_three
    Ответ написан
    2 комментария
  • Из-за большого количество посетителей сайт поплыл, что делать?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Как исправить проблему, кроме как переделывать на Nodejs?

    Контролировать запросы к БД. Не создавать повторных идентичных запросов без нужды. Повторно использовать полученные данные. Использовать кэширование данных. Оптимизировать структуру БД, включая индексы.

    Есть ли решения кроме Nodejs?

    Проблема у вас не в PHP.

    Как сделать чтобы на сайт могли зайти неимоверное количество людей и чтобы сайт выдержал нагрузки

    Использовать рекомендации, которые я и другие вам написали.

    Правда жизни: Прочитал книгу "Как изучить PHP за 20 минут" - сделал сайт. Все классно, но если заходит больше 3х человек сайт перестает работать! PHP - га**о! Ухожу на NodeJS\Ruby\Python\*...
    Ответ написан
    2 комментария
  • Python/Django-кидди, SQL-мартышка, Web-негр — что перспективнее (Ага, «Pre-Junior»)?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Пожалуйста, не идите в IT. У нас и так много "мартышек". Давайте лучше в юридический или в финансовый сектор. Там тоже много платят и тоже можно ничего не делать...
    Ответ написан
    5 комментариев