У меня странная проблема, которую я не могу отследить.
У меня есть пользовательский класс ("Person"), расширяющий Zend_Db_Table_Row_Abstract, который представляет пользователя.
Среди прочего, этот класс имеет пользовательские переменные, которые устанавливаются в методе init (), например:
class Person extends Zend_Db_Table_Row_Abstract
{
protected $_cdata = array(); // non-db-table data gets put here through __set()
public function init()
{
$this->fullName = $this->firstName." ".$this->lastName; // this is saved to $this->_cdata['fullName']
}
При входе в систему я сохраняю объект этого класса как Zend Auth Identity:
$r = $auth->authenticate($authAdapter);
if($r->isValid())
{
$user = $db->getUserByEmail($email); // Retrieves an object of class "Person"
$auth->getStorage()->write($user);
}
Теперь, если я вызову Auth Identity в том же запросе действия, что и логин, он будет работать нормально:
echo $user->fullName; // Will print "John Smith" or whatever it is
Однако, когда я вызываю другое действие и вызываю Auth Identity, я теряю все, что хранится в массиве "_cdata":
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity() {
$user = $auth->getIdentity();
echo $user->fullName; // Prints nothing...$_cdata['fullName'] does not exist.
}
Есть идеи?