Hi,
first of all, my problem:
Exceptioninformation:
Message: The object of type Yela_Persistence_Users is not persistent.
Stack trace:
#0
var/www/YelaCMS/library/ezc/PersistentObject/src/persistent_session.php(127):
ezcPersistentLoadHandler->refresh(Object(Yela_Persistence_Users))
How do i initialize my persistent session? (within Zend Framework
bootstrapping class) (/var/www/YelaCMS/application/Bootstrap.php):
/**
* Initialize persistent session.
*
* @return ezcPersistentSession
*/
protected function _initEzcSession()
{
$this->bootstrap(array('appSession', 'database'));
$db = $this->getResource('database');
$session = new ezcPersistentSession(
$db,
new ezcPersistentCacheManager(
new ezcPersistentCodeManager( APPLICATION_PATH . DS .
'sources' . DS .
'database' . DS .
'persistence') )
);
ezcPersistentSessionInstance::set( $session );
return $session;
}
Current definition file looks like this
(/var/www/YelaCMS/application/sources/database/persistence/yela_persistence_users.php):
<< this filename should be "yela_users.php" but it won't work for some
reasons :) i guess this is another problem.
$def = new ezcPersistentObjectDefinition();
$def->table = 'yela_users';
$def->class = 'Yela_Persistence_Users';
$def->properties['alias'] = new ezcPersistentObjectProperty();
$def->properties['alias']->columnName = 'alias';
$def->properties['alias']->propertyName = 'alias';
$def->properties['alias']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->properties['date_login_last'] = new
ezcPersistentObjectProperty();
$def->properties['date_login_last']->columnName = 'date_login_last';
$def->properties['date_login_last']->propertyName = 'date_login_last';
$def->properties['date_login_last']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_INT;
$def->properties['date_register'] = new
ezcPersistentObjectProperty();
$def->properties['date_register']->columnName = 'date_register';
$def->properties['date_register']->propertyName = 'date_register';
$def->properties['date_register']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_INT;
$def->idProperty = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName = 'group_id';
$def->idProperty->propertyName = 'group_id';
$def->idProperty->generator = new ezcPersistentGeneratorDefinition(
'ezcPersistentManualGenerator' );
$def->idProperty->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->properties['hash'] = new ezcPersistentObjectProperty();
$def->properties['hash']->columnName = 'hash';
$def->properties['hash']->propertyName = 'hash';
$def->properties['hash']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->idProperty = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName = 'id';
$def->idProperty->propertyName = 'id';
$def->idProperty->generator = new ezcPersistentGeneratorDefinition(
'ezcPersistentSequenceGenerator' );
$def->properties['login'] = new ezcPersistentObjectProperty();
$def->properties['login']->columnName = 'login';
$def->properties['login']->propertyName = 'login';
$def->properties['login']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->properties['mail'] = new ezcPersistentObjectProperty();
$def->properties['mail']->columnName = 'mail';
$def->properties['mail']->propertyName = 'mail';
$def->properties['mail']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->properties['password'] = new
ezcPersistentObjectProperty();
$def->properties['password']->columnName = 'password';
$def->properties['password']->propertyName = 'password';
$def->properties['password']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;
$def->properties['status'] = new
ezcPersistentObjectProperty();
$def->properties['status']->columnName = 'status';
$def->properties['status']->propertyName = 'status';
$def->properties['status']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_INT;
return $def;
The persistent object class is the following
(/var/www/YelaCMS/library/Yela/Persistence/Users.php):
class Yela_Persistence_Users
{
private $_id = null;
public $group_id = null;
public $alias = null;
public $date_register = null;
public $date_login_last = null;
public $login = null;
public $password = null;
public $mail = null;
public $hash = null;
public $status = 0;
public function getState()
{
$result = array();
$result['id'] = $this->_id;
$result['group_id'] = $this->group_id;
$result['alias'] = $this->alias;
$result['date_register'] = $this->date_register;
$result['date_login_last'] = $this->date_login_last;
$result['login'] = $this->login;
$result['password'] = $this->mail;
$result['hash'] = $this->hash;
$result['status'] = $this->status;
return $result;
}
public function setState( array $properties )
{
foreach( $properties as $key => $value )
{
$this->$key = $value;
}
}
}
The next code will output a dumped Yela_Persistence_Users object with
primary key 3 from database:
$session = ezcPersistentSessionInstance::get();
$user = $session->load('Yela_Persistence_Users', 3);
var_dump($user->getState());
And now, instead of calling $user->getState() i tried to delete the
existing object with:
$session->delete($user);
The described exception will be thrown at this position. Maybe someone
can help me.
vg René
--
Components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/components