Question

Je suis en train d'intégrer le bac à sable de Doctrine2 avec un défaut App Zend Framework. Lorsque je tente d'utiliser des espaces de noms dans le contrôleur je reçois une « classe de contrôleur non valide ( « IndexController ») » erreur

Travaux:

use Entities\User, Entities\Address;


class IndexController extends Zend_Controller_Action
{
...
}

Cela ne (mais devrait?):

namespace Entities;


class IndexController extends \Zend_Controller_Action
{
...
}
Était-ce utile?

La solution

Dans votre premier exemple, vous importez namespaces dans le contrôleur. Dans votre deuxième exemple, vous assignez le contrôleur à un espace de noms.

Importer un namespaces permet aux classes de référence sans avoir à l'utilisateur leur nom de classe complet.

new \Entities\User() // without import
new User() // with import

L'attribution d'un espace de noms à votre contrôleur change réellement le nom complet de votre classe.

new \IndexController() // without namespace
new \Entities\IndexController() // with namespace

(classes à l'intérieur d'un espace de noms peuvent toujours faire référence à d'autres classes de ce même espace de noms sans avoir à « utiliser » il. Je pense que la principale raison était que vous essayez d'utiliser l'option 2).

Zend Framework 1.10 est encore namespace ignorant. Lors de l'analyse d'une URL et essayer de charger un contrôleur, il ne regarder que regarder dans le défaut espace de noms global pour \IndexController, et ne savent pas qu'il a été affecté à un espace de noms défini par l'utilisateur (\Entities\IndexController).

Ma recommandation est que lorsque l'on travaille avec des contrôleurs dans ZF, ne namespaces pas leur assignent. Importation fin des travaux. Nous allons devoir attendre jusqu'à ce que ZF 2.0 pour le support d'espace de nom complet.

Autres conseils

Après être passé par et la lecture manuelle de certains cette page il semblerait que PHP quand vous voulez déclarer et de construire autour d'un espace de noms que vous utilisez votre deuxième syntaxe. Alors que cela créer des objets comme

Entities\IndexController 

ainsi son non plus trouvé par Zend.

Selon les site, vous devez utiliser utiliser pour importer un espace de noms et de l'utiliser.

C'est pourquoi cela fonctionne dans votre premier exemple et non dans votre deuxième.

Hope Je suis bien et cela aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top