PHP NameSpace - Pétition pour PHP6

Utilisé vous le NameSpace (ou package) dans d’autre langage ?

En Java
8
40%
En .Net
0
Aucun vote
Autres
0
Aucun vote
Je n'utilise pas !
2
10%
Je ne connais pas !
10
50%
 
Nombre total de votes : 20
Petit nouveau ! | 9 Messages

30 janv. 2007, 11:43

PHP 5 apporte une réelle évolution Object.
Il manque cependant la notion de NameSpace (ou package).

Cette notion apporte pourtant beaucoup dans des développements complexe et permet une bonne architecture des programmes.

Une pétition existe pour montrer l'intérêt que certain développeur ont pour la notion de NameSpaces au près des concepteurs de PHP.

http://www.petitiononline.com/phpns/
Chrishue - Développeur web
(PHP Best Practices - Javascript Avance - XHTML)

Mammouth du PHP | 1511 Messages

30 janv. 2007, 12:02

Pourrait t'on nous expliquer ce qu'est namespaces et l'avantage que cette technique ou technologie représente ?

ViPHP
ViPHP | 2144 Messages

30 janv. 2007, 13:19

J'ai pas suffisament d'expérience en objet en php pour me prononcer pour ce langage.
Mais en Java, c'est une fonctionnalité très importante pour structurer un projet un tant soit peu conséquent. La notion de package se retrouve d'aileurs dans UML.

Petit nouveau ! | 9 Messages

30 janv. 2007, 22:43

En gros... Le ‘Namespaces’ permet de structurer ton programme pour deux raisons :
- Le classement
- La surcharge de class

Le classement :
Permet de ranger un ensemble de class appartenant à un domaine précis dans un ‘Espace de Nom’ défini (Espace de noms = Namespaces = Package = chemin répertoire…).

Avec un EDI ou RAD qui tient comptes des Namespaces, L’aide contextuel permettra de naviguer dans les Namespaces comme dans une arborescence qui contient des Class.
Autre avantage, l’organisation et la structure de tes class sont directement intégré au langage. Plus besoin dorganiser ou de ‘Catégoriser’ virtuellement tes Class dans une documentation.

La surcharge de class :
Le principe est de pouvoir créer plusieurs class du même nom qui remplisse des fonctionnalités différentes en fonction du domaine.

Exemple de NameSpace:
Tu souhaites réaliser plusieurs class pour créer des composants graphiques qui permettent d'écrire le code HTML pour un SELECT, INPUT...

Code : Tout sélectionner

- ClassHtmlObject - ClassHtmlForm (extends ClassHtmlObject) - ClassHtmlFormInput (extends ClassHtmlForm) - ClassHtmlFormSelect (extends ClassHtmlForm) - ClassAjaxObject - ClassAjaxSelect (extends ClassAjaxObject)
Le classement ce fait donc comme ceci :
  • - Ressource.Html contient les class Object et form
    - Ressource.Html.Form contient les class Input et Select
    - Ressource.Ajax contient Object et Select
Attention : dans le namespace ‘Ressource.Html’, Form est soit la class Form soit un espace contenant les class Input et Select.
Exemple ‘imagé’ du namespace sous forme d’une arborescance :

Code : Tout sélectionner

- C:\FrameWork\Ressource\Html\Form (Repertoire) - C:\FrameWork\Ressource\Html\Form.class (Class Form)
Et pour créer une instance,

Code : Tout sélectionner

$formLogin = new Ressource.Html.form(); $inputName = new Ressource.Html.form.input();
Vous remarquerez qu’il existe des class portant le même nom (Object et Select)
Cette ‘surcharge’ est utile.
La class Object dans le nameSpace ‘Ressource.Html’ défini les méthodes de base pour gérer des composant HTML et l’autre class Object qui ce trouve dans Ressource.Ajax permet de définir les méthodes de base pour gérer des composant Ajax.

Vous trouverez beaucoup de doc sur la notion de Namesapce pour les langages JAVA ou .NET… Utiliser énormément dans les frameworks, vous en trouverez un exemple avec le framework Javascript http://Qooxdoo.org
Exemple namespace : http://api.qooxdoo.org/current/.
Chrishue - Développeur web
(PHP Best Practices - Javascript Avance - XHTML)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

31 janv. 2007, 01:12

Pour info, et si mes souvenirs sont bons, il y a eu deux threads sur php-dev qui ont totalisé quelques centaines de messages sans trouver d'issue.

PS: phpnamespaces.org semble être à l'abandon, d'ailleurs je viens personnellement de revert-er la page d'index