Ich versuche eine Methode innerhalb einer Doktrin-2-Entität im Zend-Framework zu erstellen. Es ist nur, um den Code trocken zu halten. Ich möchte das Benutzerobjekt abrufen, wenn sie angemeldet sind, und FALSE anderenfalls:
public function getCurrentUserId() {
//returns false if not logged in, user object otherwise
$auth = Zend_Auth::getInstance();
$id = $auth->getidentity();
$user = $this->_em->getRepository("EntitiesUser")
->findOneByid($id);
if (is_null($user))
return false;
else
return $user;
}
}
Dies funktioniert innerhalb einer Controller-Aktion, verursacht jedoch den folgenden Fehler:
PHP Fatal error: DoctrineCommonClassLoader::loadClass(): Failed opening required "/var/www/myswap/application/models/Repositories/Zend_Auth.php"
Warum und wie kann ich das vermeiden?
Antworten:
0 für die Antwort № 1Ich nehme an, dass Sie Namespaces verwenden, da es so aussieht.
Auf der Linie, wo Sie verwenden Zend_Auth
, setze es mit a voran - zB. $auth = Zend_Auth::getInstance();
Der Grund dafür ist, dass Namespaces in PHP relativ sind. Also, wenn Sie versuchen, nur zu verwenden Zend_Auth
Es wird davon ausgegangen, dass Sie ein Objekt im aktuellen Namespace möchten. Indem du es mit einem Präfix versiehst, sagst du es dir, du willst es Zend_Auth
von der Wurzel.
Ich würde vorschlagen, sich mit der Namespaces Handbuchseite