Как я могу добиться этого в php? - PullRequest
2 голосов
/ 01 июля 2011

Я хотел бы сделать объект, который не нужно создавать все время .... например, у меня есть пользовательский объект, и пользователь создается из базы данных, поэтому, когда пользователь входит в систему, я могу читать информацию об объекте пользователя из базы данных ... каждый пользователь делает запросы, мне нужно создать нового пользователя объект снова .... Даже я делаю одноэлементный объект ... Он все еще может "держать" объект .... Но я хочу сохранить связь между php и db ... Есть ли способ сохранить объект вместо запроса к БД все время? Спасибо.

Ответы [ 4 ]

5 голосов
/ 01 июля 2011

Поместите это в $ _SESSION? Это имело бы смысл, если бы я правильно прочитал ваш вопрос

2 голосов
/ 01 июля 2011

Но я хочу сохранить связь между php и db

Использовать APC или Memcached и кэшировать запросы.Делайте недействительной кэш-память всякий раз, когда объект User изменяется таким образом, что требуется запись его обратно в базу данных.

Это будет по-прежнему создавать новый объект User при каждом запросе, но при этом вы экономите туда и обратно в базу данных (но не в кеш).Невозможно сохранить объект PHP в памяти между запросами, не сериализовав / не сохранив его на каком-либо другом уровне.PHP ничего не передается.Объекты PHP живут по запросу.

0 голосов
/ 01 июля 2011

Что касается хранения пользовательских данных в объекте и хранения их в течение сеанса, я думаю, что это было бы хорошо, хотя я бы перетаскивал слишком много данных внутри самого сеанса. Однако вам необходимо найти баланс между постоянным повторным запросом источника данных или использованием сеансов. Это действительно зависит от вашего приложения и среды.

0 голосов
/ 01 июля 2011

Вы можете достичь этого двумя способами:

1) Как говорит Tattat, вы можете запросить базу данных, получить информацию о пользователях и сохранить ее как объект в сеансе $_SESSION['userObj'] = $userObj.Затем вы можете извлечь его из сеанса, где бы он вам ни понадобился, например, $user = $_SESSION['userObj'];

2) Второй способ - наследовать от обычной страницы php, которую вы включили на всех своих страницах (сейчас она называется * 1007).*).Использование переменной PHP GLOBAL, чтобы сделать ее доступной для любой страницы, содержащей php-файл commmon.например,

global $user; 

$admin = db_fetch_object(db_query("SELECT * FROM user u WHERE u.user_id = '%d'", $_SESSION['admin_id']));

переменная $user будет доступна для других ваших php-страниц, если вы включите файл common.php, о котором я упоминал ранее.

Надеюсь, что этот чувак поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...