J'utilise PHP Storm comme IDE, mais je crois que d'autres IDE tels que Netbeans auront le même problème que je vais expliquer ci-dessous. Lorsque vous utilisez un framework comme Symfony2, nous avons ajouté le monde merveilleux de l'injection de dépendances. Ainsi, les objets peuvent simplement être instancié à l'aide du code comme l'extrait suivant:Préserver les capacités d'auto-complétion avec l'injection de dépendances Symfony2
$myThingy = $this->get('some_cool_service');
Ceci est très pratique, car les objets sont déjà configurés au préalable. Le seul problème est que l'auto-complétion se brise complètement dans n'importe quel IDE PHP, car l'EDI ne sait pas quel type retourne la méthode get().
Existe-t-il un moyen de préserver l'auto-complétion? Est-ce que créer par exemple une extension de Controller serait la réponse? Par exemple:
class MyController extends Controller {
/**
* @return \MyNamespace\CoolService
*/
public getSomeCoolService() {
return new CoolService();
}
}
et pour les contrôleurs d'application, spécifiez MyController comme la classe de base au lieu de contrôleur? Qu'en est-il de l'utilisation d'une classe Factory ou de toute autre méthode possible?
Est-ce que le problème est qu'il ne sait pas que c'est un objet, ou qu'il ne sait pas que c'est un objet d'une classe spécifique? Si c'est le premier, ne pouvez-vous pas lancer $ myThingy en tant qu'objet? '$ MyThingy = (objet) $ this-> get (« some_cool_service »),' – DaveRandom
vrai, mais, même d'un objet laissera toujours l'IDE aucune idée de ce que le type de classe d'instances est, ce qui signifie ... toujours pas auto -complément malheureusement. :( –
Même chose que j'avais: http://stackoverflow.com/questions/21936380/best-practise-including-code-completion-in-zf2, mêmes solutions mais tous ont besoin de plus de travail – Gizzmo