Bunpu - Mot-clé - symfony2Tutoriaux, didacticiels aides en informatique. Le bute de Bunpu ? Allez directement à l'essentiel de façon simple2023-04-14T14:03:00+02:00Arobaseurn:md5:a59f25f2a0a36d13929ef592a788ddbcDotclearSymfony2 - Propel générer ses models de class dans des sous répertoiresurn:md5:f8141145464c6ec6bd99ead7b53e00182013-11-08T14:44:00+01:002014-01-26T03:23:22+01:00Arobaseinformatique / Webdeveloppementframeworkpropelreverse engineeringsymfony2<p><ins></ins><img src="http://bunpu.free.fr/public/Code_prog/.propel-logo_s.jpg" alt="propel logo" style="float:left; margin: 0 1em 1em 0;" title="propel logo, nov. 2013" /> Comment Générer ses modèles de class dans des sous répertoire (subdirectories) avec propel ? Je me suis pas mal cassé la tête pour savoir comment faire car il y a très peu de source à ce sujet, alors je me suis dit que j'allais faire un ti billet histoire d'aider d'autres personnes au cas où.</p> <h4>Générer ses Modèles de class avec l'ORM propel & symfony2 dans des sous répertoires</h4>
<p>Afin de mieux organiser son code dans symfony2 et notamment dans ses class, je chercherais sur la doc comment générer mes model de table dans des sous répertoires. Hélas la doc est un peu limite là dessus, ils ne montrent pas vraiment comment le mettre en place et c'est assez disparate.
J'ai cherché sur google et tout les sites ricains, mais rien !</p>
<p>Après avoir fait quelques tests qui ont échoué et modifié pas mal de choses, j'ai enfin réussi à générer mes class de modèle avec <em>propel</em> dans <em>symfony2</em>, en les organisant dans des répertoires ainsi que leur <em>namespace</em> en adéquation.
Et oui, Imaginez que vous deviez faire du <strong>reverse engineering</strong> sur une 100ène de table ??? Et encore 100 je suis gentil, j'avais du le faire sur une base ayant 380 table et il y a des applications php qui en ont plus.</p>
<h3>Tagger votre schema.xml de base de donnée avec package et namespace</h3>
<p>Avant tout vous devez générer le mapping de votre base de donnée ! Heureusement propel va le faire pour nous.
Dans votre console ou terminal sous Symfony2, tapez la commande :
<q>$ app/console propel:reverse</q></p>
<p>Propel va générer un fichier xml du nom de : <em>default_reversed_schema.xml</em> situé dans votre répertoire de symfony2 :
<strong>app/propel/generated-schemas/</strong></p>
<p>Ceci est le schéma représentatif de votre base de donnée. <q>Copiez le et créez un fichier schema.xml dans l'emplacement de votre Bundle désiré.</q></p>
<p>Si comme moi vous avez un Bundle qui va vous servir comme Bundle de Core de toute votre application, ce qui est le mieux lorsque l'on veut avoir "Un" Model unique de base pour toutes les requêtes classiques de votre base de donnée, important si vous travaillez à plusieurs développeur sur plusieurs bundle différent, comme ça cela permettra de factoriser au mieux votre Model de class qui vont requêter à la base de donnée. "Sous Doctrine ce sont les Entités".</p>
<p><q>Et copiez le contenu de votre fichier default_reversed_schema.xml ou bien dupliquez le et changer le nom.</q></p>
<h3>Hiérarchisez vos classes models de Propel sous Symfony2</h3>
<p>Comme dit plus haut, si vous avez beaucoup de table dans votre base de donnée, il est préférable d'avoir chaque class représentative de vos tables, répartie dans des Dossiers. C'est bien plus pratique et lisible pour s'y retrouver plutôt que de devoir scroller tout vos modèles afin de trouver le bon.</p>
<ol>
<li>Ouvrez donc votre fichier schema.xml dans votre bundle.</li>
<li>Il va falloir ajouter des tags sur les segments "database" et "table" de votre fichier xml</li>
<li>votre fichier se présente comme ci-dessous</li>
</ol>
<pre>
<database name="default" defaultIdMethod="native">
<table name="article" phpName="Article" idMethod="native">
<column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
<column name="date" phpName="Date" type="TIMESTAMP" required="true"/>
<column name="titre" phpName="Titre" type="VARCHAR" size="255" required="true"/>
<column name="auteur" phpName="Auteur" type="VARCHAR" size="255" required="true"/>
<column name="contenu" phpName="Contenu" type="CLOB" required="true"/>
<column name="image_id" phpName="ImageId" type="INTEGER" required="false"/>
<foreign-key foreignTable="image" name="FK_CD8737FA3DA5256D" onDelete="RESTRICT" onUpdate="RESTRICT">
<reference local="image_id" foreign="id"/>
</foreign-key>
<unique name="UNIQ_CD8737FA3DA5256D">
<unique-column name="image_id"/>
</unique>
<vendor type="mysql">
<parameter name="Engine" value="InnoDB"/>
</vendor>
</table>
......
</pre>
<ol>
<li>Ajoutez à la ligne <database le tag : <strong>namespace="Le\Namespace\a\vous"</strong></li>
</ol>
<p>Ceci va servir pour générer le "namespace" de base de votre dossier "Model" donc c'est très important pour qu'il n'y ait pas de conflit de class mais surtout, que ça fonctionne !</p>
<ol>
<li>Il faut ensuite ajouter le tag = <strong>"package"</strong> Et oui c'est ce mot clé qui va permettre à propel de savoir où placer votre code et créer votre dossier spécifique à la class !!</li>
</ol>
<p>Ecrivez le comme ceci, toujours dans la balise <database... package="src.schemindevotrebundle.model".</p>
<p>+Exemple concret pour la bonne syntaxe :+ <br /></p>
<p><strong>namespace="Winapp\BlogBundle\Model"</strong>
<strong>package="src.Winapp.BlogBundle.Model"</strong></p>
<p><q>Ensuite il vous faut aussi ajouter le namespace et le chemin du package pour chaque balise <table> ca c'est chiant !! J'aurais pensée qu'il suffisait d'ajouter le nom du namespace tout simplement et que propel en déduirait automatiquement mais il semble que non.</q></p>
<p>Faite le comme sur l'exemple ci-dessous :</p>
<pre>
<database name="default" namespace="Winapp\BlogBundle\Model" defaultIdMethod="native" package="src.Winapp.BlogBundle.Model">
<table name="article" phpName="Article" idMethod="native" namespace="Article" package="src.Winapp.BlogBundle.Model.Article">
<column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
<column name="date" phpName="Date" type="TIMESTAMP" required="true"/>
<column name="titre" phpName="Titre" type="VARCHAR" size="255" required="true"/>
<column name="auteur" phpName="Auteur" type="VARCHAR" size="255" required="true"/>
<column name="contenu" phpName="Contenu" type="CLOB" required="true"/>
<column name="image_id" phpName="ImageId" type="INTEGER" required="false"/>
<foreign-key foreignTable="image" name="FK_CD8737FA3DA5256D" onDelete="RESTRICT" onUpdate="RESTRICT">
<reference local="image_id" foreign="id"/>
</foreign-key>
<unique name="UNIQ_CD8737FA3DA5256D">
<unique-column name="image_id"/>
</unique>
<vendor type="mysql">
<parameter name="Engine" value="InnoDB"/>
</vendor>
</table>
</pre>
<p><strong>La vous remarquerez que le namespace de la table est simplement le nom de votre table en CamelCase ?</strong> C'est normal car propel va encapsuler le namespace et l'ajouter à la fin du namespace qui se trouve dans la balise <database>.
N'oubliez pas le tag package="" très important ! Afin de créer le dossier adéquate.</p>
<h4>Maintenant Générons nos classes de model !</h4>
<p>Tapez dans votre console la commande :
<q>$ app/console propel:model:build</q></p>
<p>Et hop ! Vous pouvez regardez dans le répertoire du bundle que vous aurez déclaré dans votre schema.xml et toutes vos classes auront été créé et rangé au bon endroit !</p>
<p>C'est quand même mieux non ?</p>
<p><strong>J'espère que ça en aidera plus d'un qui souhaite travailler avec Propel.</strong></p>http://bunpu.free.fr/index.php?post/Symfony2-Propel-generer-ses-models-de-class-dans-des-sous-repertoires#comment-formhttp://bunpu.free.fr/index.php?feed/atom/comments/39Symfony2 retour sur expérience et remise en question sur l'efficacité du frameworkurn:md5:a5770892332d50d14db18243be2939992013-03-20T02:42:00+01:002013-03-20T05:10:07+01:00ArobaseDossierdeveloppementframework phpphpsymfony2<p>J'ai déjà publié un article (un peu rapide) sur ce que l'on entendait d'un "puissant framework", cet article met surtout l'accent sur la "simplicité d'un framework". Car un framework complexe ne veut pas dire plus puissant. Et aujourd'hui je remet sérieusement en doute le choix de symfony2 comme framework de développement pour de gros projets ou quand bien même le choix de certaines entreprises.</p> <h2>Symfony2 est-il le bon choix de framework aujourd'hui en 2013 ?</h2>
<p>J'ai fait une bref analyse du pourquoi ou non choisir tel framework en entreprise, comme pour soit si l'on est développeur freelance (<a href="http://bunpu.free.fr/index.php?post/index.php?post/2012/09/06/Fuelphp-un-framework-HMVC-de-la-même-veine-que-Symfony2-framework">fuelphp, symfony2 ou zendframework</a>).</p>
<p>Cela va faire presque un an que je travail avec symfony2 dans mon entreprise, sur une grosse application de gestion de publicité en fullajax, multilingue, système de calendar étendu pour la gestion des types de publicités, gestion ACL étendu etc....
A la longue même si l'on gagne en expérience sur l'outil avec lequel on développe, dans notre cas, le Framework Symfony2 (version 2.1.8 on n'a toujours pas migré vers la version 2.2 car nous avons suffisamment rencontré de problème qui ralentissait considérablement les délais que nous avions annoncés à nos clients), On vient fréquemment à se dire "ha merde on aurait du architecturé plutôt comme ça".</p>
<p>Car à force au niveau de la maintenance cela devient vite ingérable.
Je ne viens pas dire ici qu'il aurait fallu plus s'orienter vers un CakePHP ou Zendframework, mais je vais expliqué un peu plus en détails là où sensio (symfony2) merde un peu encore une fois sur leur framework.</p>
<p><em>Brèf petit comparatif afin d'expliquer pourquoi ne pas avoir choisi certain framework du moment (au moment où il nous fallait trouver une techno framework php).</em></p>
<p><strong><ins>Pourquoi ne pas avoir choisi :</ins></strong></p>
<p><strong>ZendFramework :</strong></p>
<ul>
<li>Zenframework2 sortait mais la version n'était pas encore stable</li>
<li>La version 2 de Zendframework n'apportait pas une réel grande différence ou de nouveautés tel que l'on pouvait les attendres (Mais ça n'est pas plus mal ! Zend doit rester tout de même différent de symfony ou autre framework car la qualité des librairies de zend n'ont pas à être remises en doute c'est certain)</li>
<li>Par rapport à l'attente de certaines entreprise selon le projet que l'on choisi de faire Zend n'était pas le framework le plus recommander pour que nous l'utilisions</li>
<li>Trop de conception architectural à mettre en place avant le développement concret de l'application (donc trop de dev en plus et nous n'avions pas le temps de faire toute la migration)</li>
</ul>
<p><strong><ins>CakePHP v2.x :</ins></strong></p>
<ul>
<li>Le framework même en version 2 ne bénéficiait pas de performance suffisante afin de porter notre choix dessus</li>
<li>Bien que ayant déjà développé de mon côté sur CakePHP, bien que j'apprécie assez ce framework, bien que l'architecture déjà mise en place afin de gérer le développement de nos propres modules à des fins réutilisable soit déjà en place. Je trouve l'architecture trop imposé à ce que l'on cherche et nos besoins.</li>
<li>CakePHP est pas mal, mais lorsque l'on connait d'autres framework tel que Zend, Symfony, Laravel, FuelPHP ou encore CodeIgniter (pour des petits et moyen projet j'ai réalisé un fork de codeigniter avec un système d'autoloading à la zend), on trouve que ce dernier est un peu trop rigide et dépendant d'une convention à la base de donnée (bien plus stricte que sous Syfmony2 d'ailleurs).</li>
<li>Donc récapitulatif pour ne pas avoir choisi CakePHP, manque de performance, architecture trop stricte, dépendance trop stricte pour fonctionner avec la base de donnée déjà en place et impossible de faire une migration les coûts seraient trop important avec les anciennes versions.</li>
</ul>
<p><strong><ins>Yii Framework :</ins></strong></p>
<ul>
<li>Puissant framework tout autant que ceux cités ci-dessous</li>
<li>pas assez de documentation clair et avancé (si on veut faire un simple blog avec les fonctionnalités basique, on trouve toujours la doc qu'il faut, mais lorsqu'il s'agit de savoir comment utiliser la librairie du framework de façon avancé, il y a peu de framework qui propose la doc hormis symfony ou zend framework (aujourd'hui ;))</li>
<li>courbe d'apprentissage longue à priori donc le jeu n'en valait pas la chandelle</li>
</ul>
<h3>Notre choix de framework s'est donc porté sur Symfony2</h3>
<p>Dont la philosophie de modularité avec les Bundles sur le papier et en pré théorie était vraiment remarquable il est vrai. Mais à la longue et en réalité...
Le bute de tout framework (et de n'importe quelle application sérieuse aujourd'hui) est de diminuer les coûts de maintenance n'est-il pas vrai ?
Et bien avec Symfony2 on s'est aperçu quand même que nous avions et que nous perdions trop de temps sur la maintenance de bug du à l'implémentation d'un bundle tiers, l'apprentissage d'un nouveau bundle, où des changements très contraignant d'un upgrade à une version même mineur.</p>
<p>Je ne vais pas énumérer tous les problèmes que nous avons rencontré car certain je ne m'en souviens plus et pour d'autres cela va grossir l'article pour rien et j'ai pas envie de vous endormir avec.
La grosse problématique avec Symfony2 je trouve est que l'on a l'impression que l'on n'a jamais finit d'apprendre et de mettre son nez dans la doc, où à la recherche d'informations sur la toile car il est impossible de trouver facilement une information "importante" sur le site même de sensio.</p>
<p><strong>On se rend compte tout de même que la philosophie que tout est Bundle dans symfony2 est bien, mais que l'on passe par des chemins et des fichiers incessant pour arriver à quelque chose bien souvent je trouve.</strong></p>
<p>Avec l'arriver des des namespaces de façon stable en implémentation depuis PHP5.3 > (je ne sais plus exactement quelle version du build) et surtout pour PHP5.4, Sensio ainsi que d'autres concepteur de framework autant pour zend & co on revue leur système d'autoloading afin d'implémenter plus simplement nos développements sur de grosses applications.</p>
<p>Notamment au lieu de faire sous zend framework des controllers ou module (même pour symfony old version) zend_admin_untruc_encoreuntruc_profile, des nom de class à rallonge on peut maintenant utiliser les namespaces ! <img src="/themes/bunpu/smilies/smile.png" alt=":)" class="smiley" /> Qui permet effectivement sur de gros développement, d'éviter la collision de nom de class.
Sensio l'on dit eux même, <strong>"grâce aux namespaces cela évitera les noms de class à rallonge"</strong>...</p>
<p>Hummmm... Dois-je rappeler que dans symfony2 pour appeler un bundle tiers ou existant nous sommes obligé de faire appelle au namespace comme cela :</p>
<p><q>use Symfony\Bundle\FrameworkBundle\Controller\Controller;</q></p>
<p>Et il y a plus long ! Bien sûr on peut utiliser des alias etc... mais très franchement à la longue sur une grosse application ça peut devenir le gros bordel car on aura oublié "merde ce bundle faut que je l'appelle comme ça plutôt" etc...
Ou est donc la différence entre un nom de controller par exemple à rallonge séparé par des underscores et l'appel d'un namespace à rallonge ? Allez voir du côté de fuelPHP vous verrez la logique est plus simple et plus <strong>logique</strong> <img src="/themes/bunpu/smilies/smile.png" alt=":)" class="smiley" /></p>
<p>Avec Symfony2 pour faire certaines actions de façon simple on est obligé de passer par une logique de path très franchement, très contraignante et chiante à la longue.</p>
<p>Qui plus est (bien ou pas bien) on peut choisir d'effectuer les Route par exemple de façon différente xml, php, yaml ou annotation et j'en passe pour d'autres types de fonctions services & co.
En ce qui concerne <strong>Composer</strong>, pour mettre à jour et bien installer des bundles tiers c'est bien beau en ligne de commande, mais des fois on aimerait aussi pouvoir les installer de façon simple et manuellement dans symfony sans passer par composer et là aussi c'est compliqué sans prendre le temps de se pencher sur composer et comment symfony gère cela. Et cela demande là encore un temps à investir.</p>
<p><strong>Nous avons rencontré et du corriger le code de façon "importante" je dis bien, sur des upgrade de version "minieur", je le répète rien qu'au niveau des version de symfony 2.1.0 à 2.1.8 (je ne vous dit pas lorsque symfony 2.2 est sorti comme on a tremblé rien que de se dire si on faisait la migration ou non, on s'est dit tout compte fait qu'on ne le ferait pas pour le moment et certainement pas encore bien longtemps !).</strong></p>
<p><strong>Nous avons aussi rencontre des problèmes lors des commandes php app/console upgrade moi mes bundles ! Là aussi ce fut, je ne vous cache pas LA MERDE.</strong></p>
<p>Si l'on additionne tous ces temps passé à corriger le code, le nez dans la doc, chercher sur le blog de symfony qu'est ce qui avait changé (mais non il n'y avait pas tout le temps l'information il fallait allez chercher l'url sur github ! et ouvrir le fichier changelog ! comme c'est top j'adore lire ces petites info dans des fichiers texte), tel que les gestions des formulaires, la gestion des langues, les fichiers qui ont disparus etc...</p>
<p><q>Et bien le constat et que nous aurions pu passer plus de temps à développer notre application plutôt qu'à la débugger et comprendre symfony2 (tiens ça fonctionne plus pareil ce module faut revoir nos développements).</q></p>
<p>C'est certain que lorsque l'on a l'habitude et que l'on travail seul ou bien avec un collègue qui a la même philosophie que vous en organisation architectural (si ce dernier a suffisamment d'expérience en intégration et en javascript jquery c'est mieux) ça n'est pas un problème.
Mais lorsque vous êtes plusieurs avec des expériences différentes, des niveaux différents, des tendances de compétences différentes (car on ne peut pas demander à tout le monde d'être polyvalent sur des métiers du web)...</p>
<p><q>Et bien une application sous Symfony2 est vraiment galère à maintenir et vous avez plus l'impression de passer votre temps dans la doc et faire des petites modifications de codes par ci et par là.</q></p>
<h2>Pourquoi ne pas se diriger plutôt vers de nouveaux framework php ?</h2>
<p>Et bien car le marché de l'entreprise fonctionne comme les internautes geek sur le web ! Ils fonctionnent par mode ! Les framework en france à la mode sont Zendframework et Syfmony. voilà ce que l'on voit le plus sur les offres, alors que comme je l'avais dit dans un billet précédant, bien des entreprises n'ont nullement besoin d'utiliser tel ou tel framework pour des applications, qu'ils jugent grosse attention ! Mais qu'il en est tout autre.</p>
<p>Je trouve très franchement que sensiolab aurait pu mettre en place la philosophie de leur framework, c'est à dire Bundle, d'une façon dix fois plus simple !
Vous lisez la doc de symfony2 on voit sur certain chapitre des paragraphes qui où il va être dit "symfony gère cela de façon très simple", fréquemment que cela soit sur des blogs indépendants aussi. Mais mettez bouts à bouts tous ces "symfony gère cela de façon très simple" et bien on se retrouve avec énormément de points qu'il faut ne pas oublier, connaître et maîtriser de sorte à trouver directement ce que l'on cherche.</p>
<p>Lorsque l'on utiliser un framework, cela doit être simple et non compliqué, on ne doit pas au bout de un an avoir l'impression qu'il nous reste encore beaucoup à apprendre du framework.
Si l'on regarde sur le marché d'autres framework conjuguant les même performance (voir l'article <a href="http://bunpu.free.fr/index.php?post/index.php?post/2012/09/06/Fuelphp-un-framework-HMVC-de-la-même-veine-que-Symfony2-framework">ici</a>) autant choisir le framework qui sera le plus simple en apprentissage non ?</p>
<p>Un développeur et bien il veut développer et pas passer son nez dans la doc d'un outil à chaque fois. Bien sûr il y aura certainement les développeurs qui viendront dire "bah autant développer ton framework", ce à quoi je réponds "Ha Ha ha..." Je n'ai pas encore suffisamment les compétences pour développer mon framework afin qu'ils aient le niveau équivalent d'un symfony2, fuelphp ou autre et que j'ai rencontré, je lis et j'en vois encore, des développeurs prétentieux qui préfèrent développer leurs propre cms ou framework alors qu'ils n'ont aucune connaissance en SEO par exemple, ou bien on une très faible connaissance en intégration aussi. Et je ne vous parle même pas de question de sécurité ou bien de performance ;).
On a tendance à souvent derrière ces développeurs pour corriger d'une, leurs erreurs de programmation, d'architecture ! ou bien déjà passer le cape de la compréhension de leur code. Non mais cher amis, utiliser un cms ou un framework correcte développé par des développeurs professionnels ayant plus de recul et d'expériences sur certaines problématiques que certain n'ont pas, n'est pas une tare ! C'est une question de bon sens (faut savoir mettre son égaux ailleurs).</p>
<p>Vous vous mettez sur Laravel ou FuelPHP le développement, la compréhension est pus rapide, plus simple, plus logique ! Attention je ne considère pas Laravel comme un framework aussi puissant que FuelPHP, Symfony2 ou Zend encore, mais je site juste ce framework car on peut tout de même développer une application d'une plus ou moins grande envergure avec Laravel.</p>
<h2>Conclusion:</h2>
<p>Je me rends compte à force de développer sous Symfony2 qu'ils auraient pu architecturer leur framework de façon bien plus simple et moins fourre tout ! Il y a une grosse différence avec Symfony1 c'est certain mais c'est quand même encore fourre tout je trouve, les upgrade ont mal été géré notamment au niveau de composer (ça a été corrigé à priori sur la version 2.2 mais bon c'est trop tard).
Je me rends compte qu'en terme de coût et maintenance on en a perdu plus de temps qu'autre chose en développant sur Symfony2 et que malgré une connaissance suffisante aujourd'hui sur symfony et le fait de tester d'autres "nouveaux" framework php me tant à m'orienter et chercher à maîtriser un autre framework.</p>
<p>En gros avec Symfony je pense que l'on ne pourra jamais maîtriser ce framework sans s'y donner à temps plein, chose que beaucoup de développeur (me suivront sur ça) ne peuvent pas se permettre car on nous demande de connaître beaucoup de technologie et que l'on va se centrer sur certains CMS, quelques framework, quelques langages etc... C'est déjà beaucoup de temps à investir.
Sensio ne changera pas là dessus et je crois qu'il devrait s'orienter et mettre l'accent plus sur la "simplicité utilisateur" plutôt que de chercher à faire croire "symfony c'est simple" dans leur propre logique.</p>
<p>Nous sommes hélas pieds et poings liés en fonction des tendances technologiques que les entreprises vont choisir (et bien souvent les responsables ou développeur qui vont faire ce choix technologique n'ont pas non plus suffisamment d'expérience en la question).</p>
<p><strong>Bien que Symfony (sensio) soit un vecteur de tendance en matière de pratique de développement, que sensio soit aussi un précurseur sur bien d'autres approches, au niveau du développement sous framework, je pense aujourd'hui que symfony2 et les versions qui suivront ne sont pas l'ultime choix technologique en soit ! Et qu'il faut plus s'inspirer de la philosophie de FuelPHP et de ses développeurs et donc chercher d'autres solutions aussi puissante mais plus stable et plus simple à mettre en oeuvre.</strong></p>
<p>Donc je dis By Symfony et bonjour FuelPHP (en espérant que fuel grandisse et fasse encore plus d'écho dans l'avenir).</p>http://bunpu.free.fr/index.php?post/Symfony2-retour-sur-experience-et-remise-en-question-sur-l-efficacite-du-framework#comment-formhttp://bunpu.free.fr/index.php?feed/atom/comments/32Symfony2 - stty problème commande non reconnu - créer ou générer la base de donnéeurn:md5:d88e4df05375c552a2bef87b1b5431692012-08-06T01:00:00+02:002013-03-26T06:30:58+01:00Arobaseinformatique / Webcommand non reconnuconsoledoctrinepdo driversymfony2<p><img src="http://bunpu.free.fr/public/Code_prog/symfony2.png" alt="logo symfony2" style="float:left; margin: 0 1em 1em 0;" title="logo symfony2, août 2012" /> Dans Symfony2 beaucoup peuvent rencontrer ce type de problème, ce message exactement : ATTENTION : This opération should not be executed in a production environement.
Creating database schema ....
<a href="http://bunpu.free.fr/index.php?post/2012/08/06/PDOException" title="PDOException">PDOException</a>SQLSTATE<a href="http://bunpu.free.fr/index.php?post/2012/08/06/42000" title="42000">42000</a> <a href="http://bunpu.free.fr/index.php?post/2012/08/06/1049" title="1049">1049</a> Unknow database ...</p> <h2>Problème Console commande Create database schem</h2>
<p>Ce type de problème comme la commande <strong>stty</strong> non reconnu, certaines personnes l'on souvent rencontré lorsqu'ils débutent sous le <strong>framework Symfony2</strong>.</p>
<p>Personnellement j'ai eu ce type de problème très embarrassant lorsque j'ai voulu créer (ou générer) mes tables SQL via mes entitées.
Vraiment très agaçant car je n'ai strictement rien trouvé sur internet une réponse à ce problème, car bon nombre tout compte fait créaient leurs tables manuellement du coup.</p>
<p>A force de chercher et remonter les symptômes un par un j'ai finis par savoir d'où cela provenait.</p>
<p>Donc lorsque vous rencontrer ce type de problème ou bien encore 'STTY' commande non reconnu :</p>
<pre class="sql sql" style="font-family:inherit"><ol><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">ATTENTION : This opération should <span style="color: #993333; font-weight: bold;">NOT</span> be executed <span style="color: #993333; font-weight: bold;">IN</span> a production environement<span style="color: #66cc66;">.</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Creating <span style="color: #993333; font-weight: bold;">DATABASE</span> schema <span style="color: #66cc66;">....</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #66cc66;">[</span>PDOException<span style="color: #66cc66;">]</span>SQLSTATE<span style="color: #66cc66;">[</span><span style="color: #cc66cc;">42000</span><span style="color: #66cc66;">]</span> <span style="color: #66cc66;">[</span><span style="color: #cc66cc;">1049</span><span style="color: #66cc66;">]</span> Unknow <span style="color: #993333; font-weight: bold;">DATABASE</span> <span style="color: #ff0000;">'Symfony'</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">doctrine:schema:<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #66cc66;">[</span><span style="color: #808080; font-style: italic;">--dump-sqll] [--em[="---"]]</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">problème stty commande non reconnu </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">copier php<span style="color: #66cc66;">.</span>ini du dossier apache et le coller dans le dossier php<span style="color: #66cc66;">,</span></div></li><li style="font-weight: normal; vertical-align:top;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">ouvrir le fichier php ini si l<span style="color: #ff0000;">'erreur PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0</span></div></li></ol></pre>
<p>C'est du à un problème de <strong>PATH variable d'environnement</strong>, lorsque que vous rentrez les commandes "php app/console" vous pensez utiliser le php.ini de votre wamp, easyphp ou bien xamp mais il n'en est pas. En fait votre commande PHP se réfère en premier certainement au php.ini qui se trouve dans votre windows.</p>
<p><code>C:\WINDOW\php.ini</code></p>
<h3>Comment faire alors pour faire pointer directement en premier au path de votre variable d'environnement php ?</h3>
<p>Au lieu de modifier en ligne de commande l'alias du PATH qui fait référence au fichier php.ini de windows, on va faire encore plus simple.</p>
<p>Allez dans votre répertoire wamp ou easyphp (enfin votre virtual server)
Allez dans le dossier __Apache__
Récupérer le fichier <strong>php.ini</strong> en le copiant (pas le couper)
Et collez le dans le répertoire php, le même chemin que vous avez spécifié en variable d'environnement de windows
Une fois cela fait redémarrer votre console et votre serveur</p>
<p>Et là Surprise vous n'avez plus l'erreur spécifié plus haut et vous pouvez donc appeler la commande :</p>
<p><code>php app/console doctrine:create:database</code></p>
<h2>Si vous désirez connaitre à quel php.ini votre commande se réfère</h2>
<p>Alors tapez dans votre fenêtre MS-DOS ou Shell<br /></p>
<p><code>C:\ php --ini</code>
<br /><br /></p>http://bunpu.free.fr/index.php?post/2012/08/06/Symfony2-stty-command-non-reconnucr%C3%A9er-ou-g%C3%A9n%C3%A9rer-la-base-de-donn%C3%A9e#comment-formhttp://bunpu.free.fr/index.php?feed/atom/comments/22