Düzenlemek kullanıcıların profil sonra Zend_Auth_Storage güncelleniyor

3 Cevap php

I have following situation: I have loged user, standard authentication with DB table

$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); 
$authAdapter->setTableName('users'); 
$authAdapter->setIdentityColumn('user_name'); 
$authAdapter->setCredentialColumn('password');

Kullanıcı kendi profilini düzenlediğinde, ben Db içine kaydetmek, ama ben (standart Zend_Auth_Storage_Session kullanarak) ayrıca depolama güncellemeniz gerekir. Bunu yapmak için nasıl bir kolay yolu var mı? Çok teşekkürler.

3 Cevap

Varsayılan sadece (iyi bir neden için) kimliğini tutar ile - en iyi bahis değiştirmek olasıdır bilgilerini tutmak için Zend_Auth depolama kullanmak değil olacaktır. Ben muhtemelen tüm Yet, ACL (ve muhtemelen profil) oturumda saklanmış kullanıcı yüklemek için statik get_current () yöntemini kullanır işlevselliği sarılmış bir kullanıcı sınıfı yapmak istiyorum. Bu oturumda içine doldurma hem de size gerçekten bir performans artışı gerektiğinde eğer / önbelleğe uygulamak için tek bir noktaya verirken çalıştırmak tüm tutarlılık sorunları atlar.

$user = Zend_Auth::getInstance()->getIdentity();
$user->newValue = 'new value';

Eğer orada veritabanını güncelliyoruz aynı açıklamada oturum verileri güncelleyerek varsayarsak yine db aramak gerek yoktur.

Ben çalışır, bu gibi yaptım, ama biraz daha iyi bir yol yok ise ben bunu nasıl bilmiyorum

$user_data = User::getUser($user_id)->toArray();
unset($user_data['password']);

$std_user = new stdClass();

foreach ($user_data as $key => $value)
{
   $std_user->$key = $value;
}

$auth = Zend_Auth::getInstance();     
$auth->getStorage()->write($std_user);