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)