LINUX.ORG.RU

Встроенный механизм сессий vs собственный класс

 


0

2

Не перестаю удивляться PHP (в хорошем смысле), как он позволяет ломать собственные же функции. Например, хочу использовать свой класс для работы с базой данных поверх PDO, но у меня нету времени изобретать велосипед, а работать хочется «прямщяс»!

Да не вопрос:

class Database {
    protected $db_handler = NULL;
    public function __construct() {
        try {
            $this->db_handler = new PDO(
                'sqlite:../db/development.sqlite', NULL, NULL,
                ['PDO::ATTR_ERRMODE' => 'PDO::ERRMODE_EXCEPTION']
            );
            return $this->db_handler;
        }
        catch (PDOException $e) {
            die();
        }
    }
    public function __call($method, $args) {
        return call_user_func_array(array($this->db_handler, $method), $args);
    }
}

$db = new Database();
И функция __call будет перенаправлять все вызовы prepare/bindValue/execute далее по контексту PDO, пока у вас не вырастет хотелка реализовать собственные методы внутри класса. Вот как здорово.

Сессии оказывается тоже можно переписать, причём для этого не нужно перелопачивать проект целиком, а установить одну единственную функцию session_set_save_handler();, указав «бэкенд» для работы с сессиями. Затем все действия, open/close/read/write/gc (garbage collector)/destroy, будут спрашиваться у этого бэкенда, тобишь задавая переменную $_SESSION['key'] = 'value'; на деле будет вызываться класс $session = new Session(); $session->write('key', 'value');, который может являться записью key-value значения в SQL базу данных. Как тебе такое, Илон Маск!?

Вопрос. Вместо того, чтобы «ломать» встроенный механизм сессий PHP, может проще сразу использовать свой? Тобишь, отказаться от использования session_start / $_SESSION / etc... А полностью перейти на своё. Или не?

★★★★★

я использую свое - мне так удобно

r0ck3r ★★★★★
()

А полностью перейти на своё.

Да. Встроенные сессии это решето.

no-such-file ★★★★★
()

Вместо того, чтобы «ломать» встроенный механизм сессий PHP, может проще сразу использовать свой?

Никакой разницы не будет, делай как хочешь.

goingUp ★★★★★
()

Встроенный механизм сессий и даже session_set_save_handler для крутых наворотов уже есть, а новый движок самому придётся писать и тестировать. Это можно, конечно, только зачем? Мне за свою долгую жизнь только пару раз понадобился session_set_save_handler, а так и обычного дефолта хватает на всё.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.