Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Débat : Comment voyez-vous les espaces de noms (namespaces) en PHP 5.3 ?

Le , par RideKick, Rédacteur
Salut

Depuis plusieurs mois, la discussion sur la meilleure manière d'implémenter les espaces de noms (namespaces) en PHP ne cesse d'être alimentée par de nouveaux arguments.

Je pensais que les développeurs core trouveraient une solution simple et rapide, mais visiblement ils se heurtent à des cas d'utilisation parfaitement opposés et il leur est difficile de tomber d'accord. Une nouvelle RFC a donc vu le jour afin de proposer d'utiliser les accolades {} pour les espaces de noms (ce qui n'est pas le comportement actuel) : http://wiki.php.net/rfc/namespacecurlies

L'implémentation actuelle est telle que je l'ai décrite dans mon cours : http://g-rossolini.developpez.com/tu...page=poo#LIV-B
Une alternative est d'obliger l'utilisation des accolades, ce qui pose le problème de l'indentation mais qui permet d'inclure du code hors-namespace dans le même script.
Une autre question est la hiérarchie des espaces de noms : est-ce utile, est-ce nécessaire ?

Voici la discussion internals@ qui accompagne la nouvelle RFC : http://marc.info/?l=php-internals&m=122018993030061&w=2
Stanislav y a bien entendu répondu : http://marc.info/?l=php-internals&m=122034228323300&w=2

Citation Envoyé par Stanislav Malyshev
OK, I would be happy to hear these other people - what are they use cases and what they try to do with namespace nesting. Other people, please speak.


Qu'en pensez-vous ? Comment voyez-vous l'utilisation des namespaces en PHP ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Grepsd Grepsd - Membre habitué http://www.developpez.com
le 10/11/2008 à 14:15
Pour ma part j'opterai pour la première proposition qui nous oblige à développer avec une rigueur qu'on ne retrouve que très peu dans le milieu du développement en PHP(le libre en général par éxtension).

Les espaces de nom est vraiment un concept qui manquait à PHP et qui va faire son apparition pour mon plus grand bonheur.

J'attends maintenant la possibilité de typer les variables. :p
Avatar de - http://www.developpez.com
le 11/11/2008 à 2:24
pour ma part j'attend la possibilite de compile le php, sur dans une architecture mvc ca prend son sens.
Avatar de Yogui Yogui - Rédacteur http://www.developpez.com
le 11/11/2008 à 13:55
Citation Envoyé par mon_nom_est_personne  Voir le message
pour ma part j'attend la possibilite de compile le php, sur dans une architecture mvc ca prend son sens.

C'est déjà possible, dans une certaine mesure, avec des outils comme Zend Guard ou avec l'extension bcompiler par exemple
Avatar de - http://www.developpez.com
le 11/11/2008 à 23:53
oui je sais mais je parler de procedure plus generalise car bcompile est encore au stade de beta (ou meme alpha) et les deux deux font plus de l'obfuscation qu'autre chose. moi je parle de bite code site .net, java, c++ enfin un truc qui boost la vitesse du php.
mais la c'est du hors sujet, les espace de nom oui, l'opperateur \ non pour une simple la raison suivant :
dans les encodage asiatique (chinois, coreen et japonais) le backslash devient par exemple pour le japonais ¥ desfois ca passe mais des fois ca marche pas.
apres je sais que php 6 sera en unicode mais d'ici la...
faites des tests, creer un script en jsis vous allez vous; c'est désopilant.
Avatar de Yogui Yogui - Rédacteur http://www.developpez.com
le 12/11/2008 à 13:39
Citation Envoyé par mon_nom_est_personne  Voir le message
dans les encodage asiatique (chinois, coreen et japonais) le backslash devient par exemple pour le japonais ¥ desfois ca passe mais des fois ca marche pas.
apres je sais que php 6 sera en unicode mais d'ici la...
faites des tests, creer un script en jsis vous allez vous; c'est désopilant.

C'est intéressant
Crois-tu que tu pourrais fournir un exemple précis ? Des scripts par exemple ?

Avatar de - http://www.developpez.com
le 13/11/2008 à 2:09
oui attend je colle ca souvent ca arrive avec les \n qui sont traite comme ¥n
ou alors le pire c'est les chemins window desfois ca marche mais desfois ca marche pas.
j'ai surtout experimente le probleme avec ma fonction mail. je fais fouiller dans ma librairie si j'ai encore un qui marche pas.
Avatar de - http://www.developpez.com
le 14/11/2008 à 10:45
malheureusement j'en ai pas trouve, mais je souvien que j'ai eu pas mal de souci avec des \" qui, comme \ deviens¥ interprete le ".
Avatar de Yogui Yogui - Rédacteur http://www.developpez.com
le 14/11/2008 à 11:27
Il nous faut un exemple permettant de reproduire précisément le problème, sinon la seule explication qui me vient est que tu as probablement confondu deux encodages, bref qu'il s'agit d'une erreur de manipulation de ta part plutôt que d'un problème inhérent à PHP.
Avatar de goodpz goodpz - Membre confirmé http://www.developpez.com
le 25/01/2009 à 23:05
A posteriori, utiliser "." comme opérateur de concaténation de strings s'est avéré être un bien mauvais choix! Je fais bien sûr allusion aux namespaces de php 5.3 qui ne peuvent du coup bénéficier de "." comme opérateur de résolution.
Avatar de Yogui Yogui - Rédacteur http://www.developpez.com
le 26/01/2009 à 0:29
Citation Envoyé par goodpz  Voir le message
A posteriori, utiliser "." comme opérateur de concaténation de strings s'est avéré être un bien mauvais choix! Je fais bien sûr allusion aux namespaces de php 5.3 qui ne peuvent du coup bénéficier de "." comme opérateur de résolution.

Salut

Je comprends ta remarque mais un séparateur est un séparateur, rien de plus. Dans certains langages, le point a plusieurs significations ; en PHP, il n'en a qu'une. Dans certains langages, les espaces de noms utilisent le point ; dans d'autres, c'est un autre caractère ; en PHP, c'est le backslash. Il n'y a pas de bonne ou de mauvaise décision là-dedans, c'est simplement ainsi.

En réalité, il est du domaine du possible pour le PHP Group d'utiliser le point comme séparateur pour les espaces de noms, sans causer de conflit avec ses autres utilisations. Cependant, ce serait au prix de performances déplorables et d'un code source totalement unmaintenable dans le noyau du langage PHP... C'est exactement ce dont souffrent d'autres langages mais, puisque la plupart sont compilés, cela ne se ressent que par un temps de compilation (légèrement plus) élevé : le temps d'exécution des programmes n'est pas affecté. Cet aspect serait bien plus grave pour PHP (= ralentissement à chaque exécution), c'est pourquoi cette solution complexe n'est pas envisageable.
Avatar de goodpz goodpz - Membre confirmé http://www.developpez.com
le 26/01/2009 à 4:29
Citation Envoyé par Yogui  Voir le message
Je comprends ta remarque mais un séparateur est un séparateur, rien de plus. Dans certains langages, le point a plusieurs significations ; en PHP, il n'en a qu'une. Dans certains langages, les espaces de noms utilisent le point ; dans d'autres, c'est un autre caractère ; en PHP, c'est le backslash. Il n'y a pas de bonne ou de mauvaise décision là-dedans, c'est simplement ainsi.

Faut quand même reconnaître que l'apparition et surtout l'adoption du backslash pour les namespaces a engendré des réactions de rejet parfois virulentes au sein de la communauté. Je ne pense pas qu'on aurait eu les mêmes réactions si l'opérateur "." avait pu être pleinement disponible.
En ce qui me concerne, j'utilise les namespaces de php 5.3 depuis un moment déjà (également lorsque "::" était implémenté). Je m'y suis fait rapidement, d'autant plus que j'ai suivi les débats sur la mailing internals et suis donc un minimum au courant des choix pratiques sous-jacents. Mais quand même, "." ça l'aurait mieux fait
Offres d'emploi IT
Paris - Développeur PHP
esabora - Ile de France - Paris (75013)
Ingénieur développement web H/F BOURSORAMA
Societe Generale - Ile de France - Boulogne-Billancourt (92100)
Développeur php - h/f
UpSourcing - Ile de France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique PHP