10
votes

Doctrine 2. Proxies de génération automatique

J'ai un problème étrange. Je veux éteindre la génération automatique de mes proxies dans la doctrine 2. J'ai trouvé cette ligne de code qui devrait faire (et fait) l'astuce: xxx pré>

sur mon environnement de test Les proxies sont situées. à application / proxies em>. c.-à-don: p> xxx pré>

Lorsque je suis sur l'environnement en direct, mon code cherche soudainement les proxies à applications / proxies / proxies em> ce qui n'est pas le réel Emplacement. P>

Je comprends que cela a quelque chose à voir avec l'espace de noms, mais je ne comprends pas pourquoi il se comporte différemment lors de l'utilisation de la méthode SetAututOtogénereProxie EM>. P>

TOUTES IDÉES? P>

EDIT STRY> P>

J'ai généré les nouveaux proxies à l'aide de: P>

$config->setAutoGenerateProxyClasses(DEVELOPMENT);


1 commentaires

Essayez de définir le répertoire des proxies pour simplement AppPePathsystem. Il devrait récupérer l'espace de noms des «proxies» à partir de là.


3 Réponses :


5
votes

Je ne pense pas que les proxies autogénérés soient soins.

Au lieu de pousser les proxy autogénérés à la production, vous devriez probablement DOCTRINE ORM: générer-proxies , que je suppose les mettre à la place de votre code de production est configuré pour les rechercher.


0 commentaires

4
votes

Vous développez-vous sur OS X et déployez-vous à Linux? Le système de fichiers du système d'exploitation d'OS X est un cas insensible . Donc, je vais souvent rencontrer un problème dans lequel je crie le cas d'une classe et qu'il court et passe très bien dans l'environnement local, mais des étouffements sur notre serveur.

Donc, dans ce cas, dans OS X, la "proxie" de noms est capable de résoudre "/ proxy", mais en production, il ne peut pas trouver le dossier de la classe et la crée sous "/ proxy / proxies" .


0 commentaires

3
votes

Si vous renommez le dossier sur quelque chose appelé "/ TEMP", vous réaliserez la différence entre le chemin et l'espace de noms.

Le chemin est le chemin absolu de l'annuaire que les proxies sont générés. L'espace de noms est nécessaire pour vous permettre de configurer comment un automoduer récupère ces entités.

Le chemin de votre cas doit être quelque chose comme "Proxies / Proxies" et l'espace de noms est alors "Proxies". Votre autoloader doit être configuré pour écouter le préfixe d'espace de noms "Proxies" sur le répertoire "Proxies /".

C'est toute l'humeur avec la doctrine 2 RC1, nous avons trouvé un moyen de charger explicitement un chemin de proxy sans l'aide d'un automoduer sans frais supplémentaires. L'espace de noms de proxy configuratino est donc nécessaire pour s'assurer que aucune autre classe n'est dans la même espace de noms que les proxies.


1 commentaires

Je connais la différence entre un espace de noms et un chemin :). Lisez mon message pour le vrai problème. Merci pour votre réaction cependant.