Есть ли способ передать объект через сеансы и использовать его функции? - PullRequest
1 голос
/ 25 августа 2011

Насколько я понимаю, когда вы сериализуете объект и пропускаете его через сеанс, например, со страницы index.php на securePage.php, SESSION просто передает данные этих объектов, поэтому вы не можете использовать функции этого объекта. Единственный способ - это создать новый объект в securePage.php с данными, которые вы передали .... Есть ли способ передать реальный объект и затем использовать его функции, не создавая совершенно новый объект в securePage.php.

Пример:

$randomObj = new rndObject;
$_SESSION['object'] = serialize($randomObj);

и securePage.php

$whatever = unserialize($_SESSION['object']);

//below code won't work and say something like
//Fatal error: Call to a member function checkAccess() on a non-object in 
//securePage.php on line 39
echo $whatever->checkAccess();

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

В некотором роде, чтобы получить объект, который был загружен в SESSION, вам нужно включить определение класса где-нибудь перед вызовом unserialize, и он будет работать так, как вы ожидаете, но технически он все равно создаст новый экземпляр.

0 голосов
/ 25 августа 2011

Вы должны использовать магические методы __sleep () и __wakeup () (вот для чего они нужны):

http://www.tuxradar.com/practicalphp/6/13/0

http://php.net/manual/en/language.oop5.magic.php

...