mageekblog - Mot-clé - Xdebug - CommentairesLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearPHP 5.4 RC3 - Matthieuurn:md5:3ff151062ba812d7cde71b1a83b2f02e2011-12-10T11:46:26+01:002011-12-10T16:16:52+01:00Matthieu<p>PHP_BINARY > Super utile pour les scripts qui doivent lancer d'autres scripts PHP !</p>Complément à la documentation de Xdebug - mageekguyurn:md5:6a4c53e5c66055e3b93a6511fdb323cc2010-12-08T10:13:54+01:002010-12-08T10:17:27+01:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/12/07/Compl%C3%A9ment-%C3%A0-la-documentation-de-Xdebug#c2299" rel="nofollow">windu.2b</a> : C'est effectivement une solution mais elle crée une dépendance envers le système de fichier dont je souhaiterais me passer.</p>
<p>Le système de fichier peut être plein (plus d'inode, plus de place, etc), si les tests plantent, le nettoyage n'est pas forcément fait, il faut donc coder un garbage collector, si des tests sont exécutés en paralléle, ça peut poser des problèmes de lock, bref, c'est beaucoup plus de contraintes qu'un simple appel à php://temp.</p>Complément à la documentation de Xdebug - Guileurn:md5:1fb9e3d698ec966d9ff0c2cc250123162010-12-08T09:30:41+01:002010-12-08T10:17:27+01:00Guile<p>Ce dont j'ai peur c'est que ce wrapper est très particulier. As-tu essayé avec un autre wrapper ?</p>Complément à la documentation de Xdebug - windu.2burn:md5:9b1183a11204d41d5541f8074ae94d462010-12-08T04:23:03+01:002010-12-08T10:17:27+01:00windu.2b<p>Et créer / détruire un fichier avec setUpBeforeClass() / tearDownAfterClass() ?<br />
(ou setUp() / tearDown() si c'est nécessaire pour chaque test)</p>
<p>Ainsi, pas de fichier qui traine vu qu'il est détruit à la fin du test, et pas de pb avec "php://temp" (ce qui ne nous dit toujours pas où se situe le pb à utiliser ce fichier, certes...)</p>Complément à la documentation de Xdebug - mageekguyurn:md5:b0eb27149f22daf3882d0453c3236b212010-12-08T00:00:18+01:002010-12-08T00:05:36+01:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/12/07/Compl%C3%A9ment-%C3%A0-la-documentation-de-Xdebug#c2294" rel="nofollow">Guile</a> : Je l'attendais celle-là :).</p>
<p>Plus sérieusement, je fais cela dans le cadre d'un test unitaire, afin de ne pas à avoir à inclure via <code>require()</code> un fichier <q>réel</q> qui pourrait contenir des choses qui ne m'importe aucunement dans le cadre de mon test, voir même qui pourraient poser problème.</p>
<p>Cette méthode m'évite également de <q>polluer</q> mon système de fichiers avec un fichier vide qui ne me sert que dans le cas de ce test.</p>
<p>Bref, cette façon de faire, très peu orthodoxe je le reconnais, me permet d'avoir un test totalement indépendant du reste du monde.</p>
<p>Et c'est discutable à l'infini, et c'est pourquoi je ne rentrerais pas plus dans ce débat.</p>Complément à la documentation de Xdebug - Guileurn:md5:827981bba2e5c2698df77dfb187f1c7c2010-12-07T19:01:24+01:002010-12-08T00:05:36+01:00Guile<p>Je vais poser la question du gars qui sait pas quoi te répondre mais qui veut à tout prix te donner une réponse en te posant une question (???) : à quoi ça te sert réellement de faire require('php://temp') ? Tu ne pourrais pas faire autrement?</p>
<p>Bon à part ça j'ai bien conscience que ça ne t'avancera pas <img src="/themes/default/smilies/smile.png" alt=":-)" class="smiley" /></p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - mageekguyurn:md5:d88234b5ad49ba92e91e9d4c19835ee72010-09-27T19:10:54+02:002010-09-27T18:13:24+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/09/23/switch-%28true%29-case-Mathieu-ROBIN-%3A-%24mageekblog-interview%28%29%3B-break%3B#c1951" rel="nofollow">Arnaud</a> : Je n'y ai pas encore réfléchie, mais je ne suis pas certain que ce genre d'interview soit significative.</p>
<p>Il serait beaucoup plus intéressé d'avoir l'avis d'une personne qui a switché vers autre chose avant de revenir à PHP.</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - metagotourn:md5:dcad8628144e7ecb7dcf379f1554bc642010-09-27T15:25:13+02:002010-09-27T14:39:05+02:00metagoto<p>@Maxime<br />
Oui, très juste. Exit les magic methods de ce genre. Ou alors il faudrait être explicite, du genre opérer un cast explicite. Ou laisser le "compilo" détecter les ambiguités. Ca serait tout aussi chiant que C++ in fine!</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - metagotourn:md5:6eb7546511648ec00d6696c3d391189f2010-09-27T15:17:35+02:002010-09-27T14:39:05+02:00metagoto<p>@mageekguy<br />
Oui. Ce dont parle Xav serait juste une possibilité. A mon avis, cela serait envisageable dans le cadre d'un typage fort et statique (surtout statique en fait).<br />
Du coup je propose:<br />
$ref.member<br />
auto $ptr = &$ref<br />
$ptr->member == $$ptr.member<br />
C'est bizarre, ça me fait penser à quelque chose ; )</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - MathieuROBINurn:md5:ce2a4bff69bb02331f9cfd10d54ea6a92010-09-27T14:33:08+02:002010-09-27T13:54:18+02:00MathieuROBIN<p>A la limite cette notation n'est pas bien dérangeante^^<br />
Et je suis assez d'accord avec Xav, il y a aussi un problème de mentalité. Le coup du graphiste qui code ou du type qui sait faire un peu d'ergonomie, un peu de graphisme et un peu de PHP. C'est pas bon, voire même complètement anti-professionnalisme.<br />
C'est d'ailleurs pour moi un problème qu'à essayer de résoudre Adobe avec Catalyst ou encore Microsoft avec d'un côté Visual Studio pour le développeur et de l'autre Blend pour les designers.<br />
Côté PHP, c'est un travail à réaliser côté recruteurs/chef de projets qui n'ont jamais touché une ligne de code.</p>
<p>Pour la rigueur, il est vrai que les frameworks (je ne connais que ZF) apporte énormément de choses et facilite bien mon travail. Mais pour autant, il y a encore un manque côté documentation. Honnêtement, je me suis farci une vingtaine de tutoriels avant d'avoir une installation qui marche ENFIN correctement pour une architecture utilisant le modèle MVC... le tuto proposé par Zend étant incomplet et peu clair.</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - Maximeurn:md5:df35b8f31f37c48d261fd61ed6201f142010-09-27T12:34:54+02:002010-09-27T13:54:18+02:00Maxime<p>@metagoto<br />
Faut pas oublier __toString()</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - Arnaudurn:md5:b382c38676d16d22d0ec27b7c33e2c982010-09-27T12:06:35+02:002010-09-27T13:54:18+02:00Arnaud<p>Merci tout d'abord pour cette série d'articles, et pour la précédente.<br />
Je me pose maintenant une question. As tu prévus pour la suite une série d'interview de développeur qui on choisi de rester sur PHP et pourquoi ?</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - mageekguyurn:md5:f876a537752d867700ce97a9ab6d3a112010-09-27T08:40:09+02:002010-09-27T07:41:25+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/09/23/switch-%28true%29-case-Mathieu-ROBIN-%3A-%24mageekblog-interview%28%29%3B-break%3B#c1946" rel="nofollow">metagoto</a> : Mais nous sommes bien d'accord que la mise en œuvre d'un typage fort ne rend pas indispensable le remplacement de <code>-></code> par <code>.</code>.</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - metagotourn:md5:f82671598ca568fabdd30f43b568bf3a2010-09-26T14:59:39+02:002010-09-26T16:44:02+02:00metagoto<p>@mageekguy<br />
Probablement le fait que l'opérateur de concaténation de chaines "." ne s'appliquerait plus que sur des vars de type chaine... ce qui le rendrait disponible pour d'autres usages, par exemple si l'opérande de gauche est de type objet (qui a dit de type namespace? ; )</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - mageekguyurn:md5:584a3ae1f11ab7ae50d9373cb4e0f7592010-09-26T12:53:35+02:002010-09-26T11:55:39+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/09/23/switch-%28true%29-case-Mathieu-ROBIN-%3A-%24mageekblog-interview%28%29%3B-break%3B#c1944" rel="nofollow">Xav</a> : Il faut que tu m'expliques en quoi la mise en oeuvre d'un typage fort implique l'utilisation de <code>.</code> à la place de <code>-></code>.</p>
<p>Sinon, qu'est ce que tu as contre les gauchers <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /> ?</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - Xavurn:md5:09693ab47a2a03f90c0161626da62ee82010-09-25T21:15:41+02:002010-09-26T11:55:24+02:00Xav<p>il me semble que PHP ne nécessite pas une évolution urgente ou radicale.<br />
C'est vrai que l'on pourrait imposer le typage fort, ce qui induirait d'ailleurs la possibilité d'utiliser . (point) au lieu de -> dans les notations objet...mais bon, on se demande parfois si certains ne regrettent pas que PHP ne soit pas Java !<br />
Une question que je pose parfois à certains stagiaires / clients qui se plaignent sans arrêt du PHP : "êtes vous certain que PHP soit le bon choix sur ce projet ? si vous voulez absolument telle ou telle particularité, pourquoi ne choisissez-vous pas Ruby, ou C# ou Java ? Hein ? Dites ?</p>
<p>D'autre part, dans des cours que je dispense à l'occasion, il m'arrive d'avoir des stagiaires qui viennent là "à l'insu de leur plein gré", envoyés par leur DSI qui a décidé de les recycler du Java au PHP. Très réticents au début, finissent enthousiasmés quand ils découvrent qu'UML, MVC, Design Patterns et PHP sont des mots qui peuvent aller très bien ensemble...<br />
Pour moi, le seul besoin réel est une évolution des développeurs PHP, mais aussi des donneurs d'ordre et des recruteurs ("cherche graphiste très créatif avec une très bonne connaissance de PHP", etc.), qui ont tendance à induire la subsistance (voire l'émergence)de mouton à cinq pattes (gauches en général).</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - sunseburn:md5:e5ddba9c02958205c6698c6edd66930f2010-09-25T13:07:45+02:002010-09-26T11:51:33+02:00sunseb<p>Débat intéressant !</p>
<p>Pour moi, le point fort de PHP : il ne nous impose rien (chaînes de caractères et guillemets, typage, etc.) et on est maître ce qu'on fait. J'adore le typage faible : je trouve mon code PHP beaucoup plus simple et beaucoup plus lisible. Je me sens libre et créatif en PHP, alors qu'avec Java, j'ai l'impression de programmer comme un robot sans âme.</p>
<p>Maintenant, oui, dans une environement d'industrialisation ou de travail en équipe, il faudrait amener une rigueur, une structure à PHP.</p>
<p>Mais n'est-ce pas là justement le rôle des frameworks ? L'arrivée de ZF 2.0 et de Symfony 2.0 vont amener beaucoup dans ce sens, sans doute.</p>
<p>PHP est accessible à TOUS et c'est ce qui le rend original et attrayant. Il s'adapte au niveau de chacun. Un débutant fera des choses intéressantes ; un expert réalisera des chefs d'oeuvre. C'est unique pour un langage de programmation.</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - Guileurn:md5:0b7991a1b12b150382975d3adb33f2ee2010-09-24T14:44:16+02:002010-09-24T14:01:55+02:00Guile<p>Bonjour à tous!</p>
<p>A mon humble avis, PHP a l'avantage d'être simple et documenté. Un débutant s'en sortira très bien au début. L'inconvénient : même avec mes 8 ans de pratique de PHP, il reste des incohérences fatigantes qui m'obligent à aller voir la doc!<br />
Le PHP donne l'impression (pour le débutant) d'une évolution très rapide, mais cette évolution ne persiste pas sans utiliser d'autres outils : framework, tests unitaires...</p>
<p>Le fait de souhaiter voir un typage fort des variables dans PHP, c'est souhaiter dénaturer le PHP : son essence même réside dans une interprétation contextuelle du type de chaque donnée.</p>
<p>PHP doit selon moi accentuer son effort dans :<br />
- la remise à plat de certaines "non-normes" (ordre des paramétres des fonctions, nomenclature...)<br />
- l'oubli catégorique des erreurs : le core de PHP doit utiliser les exceptions!<br />
- l'accomplissement total du modèle objet : ajout de concepts, surcharge (satanée méthode abstraite qui veut à tout prix que j'utilise cette interface en paramètre et pas une autre!)<br />
- le reniement des mauvaises pratiques avérées : extract(), list(), le tag <?= ?>.</p>
<p>Ceci passe forcément par une version qui sera fortement incompatible avec ces vieux scripts php mal foutus de nos jours. Mais ce passage douloureux que la communauté des contributeurs à PHP se refuse de faire, a pourtant déjà été fait avec la dépréciation de certaines fonctions (telle split() ...).<br />
Il faut que PHP évolue de telle manière qu'il permette aux développeurs avancés de s'améliorer encore plus (utilisations de design pattern par ex.) tout en conservant son accessibilité aux débutants</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - usulurn:md5:ff4d37b8f54e9e9c7743aed418709d972010-09-24T12:31:57+02:002010-09-24T12:53:58+02:00usul<p>Moi je rêve d'avoir la possibilité de typer mes variables et attributs.<br />
Par contre je ne souhaite pas que ce soit obligatoire.<br />
Juste pouvoir le faire si j en ai envie.<br />
C'est ça que j'aime dans ce langage (et qui fait aussi que je peste a chaque revue de code), qu'il nous permette de développer rapidement et simplement mais aussi avec une vraie architecture logicielle, des interfaces ...</p>
<p>De la même manière je rêve de pouvoir gérer les erreurs avec uniquement des exceptions ...</p>switch (true) case 'Mathieu ROBIN': $mageekblog->interview(); break; - MathieuROBINurn:md5:59fdd07a12f8c59b298ba3dd473760f82010-09-24T11:40:27+02:002010-09-24T12:53:58+02:00MathieuROBIN<p>Je t'accorde que ça dénaturerait profondément PHP. Ce qui correspond à ton tweet d'hier soir du coup.<br />
Mais j'ai peur que cette situation de typage dynamique soit aussi ce qui à terme tuera PHP.<br />
Ceci dit, je comprends aussi qu'on puisse s'opposer totalement à mon point de vue. Quand un code est bien fait et bien documenté, normalement ça pose aucun souci le typage dynamique. Mais ça sent l'utopie quand même <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /></p>