Использование объектов в приложении - PullRequest
3 голосов
/ 04 июня 2010

Привет, у меня есть одна страница, где я настраиваю объект класса User.

$id = $_SESSION['user_id'];
$current_user =  new User();
$current_user->getFromID($id);

Я пытался получить доступ к этому объекту с другой страницы, но он отображается пустым. Есть ли какой-нибудь особый способ сделать это?

Ответы [ 3 ]

4 голосов
/ 04 июня 2010

Вам также необходимо сохранить объект в сеансе.

$_SESSION['user_id'] = $current_user;

Не забудьте включить определение класса User (вероятно, в своем собственном файле, не так ли?) На все страницы, которые используют сеанс, в противном случае объект User может быть поврежден.

2 голосов
/ 04 июня 2010

Сохранение самого объекта в сеансе. Для этого ваш объект должен реализовать функции __ sleep () / __wakeup () .

На самом деле в этом случае вам, вероятно, нужно только __wakeup(). Я бы сделал это примерно так:

Определение класса пользователя:

<?php //included file
class User {
  private $user_id;
  function getFromID($id) {... doing something; }
  function __wakeup() { 
     $this->getFromID($this->user_id);
  }
}

А затем использовать его и извлекать / хранить в сеансе;

<?php //some page
$current_user = $_SESSION['user'];
if(!$current_user) $current_user = new User();
...
$_SESSION['user'] = $current_user;
0 голосов
/ 04 июня 2010

Если у вашего объекта есть какое-то состояние, вы можете сохранить его в сеансе.
Это способ передачи переменных между скриптами в PHP.

Но если этого не происходит - просто инициализируйте его снова.

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