Indécision pour les espaces de noms

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Indécision pour les espaces de noms

Re: Indécision pour les espaces de noms

par stealth35 » 05 juil. 2011, 15:34

Cool, hâte de voir ça sur le git :wink:

Re: Indécision pour les espaces de noms

par Gofromiel » 05 juil. 2011, 15:19

Fort de vos conseils je me suis lancé confiant dans les espaces de nom, en commençant par le framework qui pour le coup change de nom. Pour les modules je pense que je vais tous les renommer, fini "system.nodes" et "contents.articles" et bonjour à "Nodes" et "Articles". Cela me permettra d'avoir des noms pour les activerecord plus simples : ICanBoogie\ActiveRecord\Node et ICanBoogie\ActiveRecord\Articles. Pour les opérations je ne suis pas encore sûr, mais j'espère être touché par la grâce au cours du développement des nouvelles versions du framework et du CMS.

Merci.

Re: Indécision pour les espaces de noms

par devlop78 » 22 juin 2011, 16:54

Perso, j'utilise maintenant le système Zend, qui est d'avoir un dossier library et les librairies dedans.

Donc :

Zend_Form_Element
Machin_Truc

et avec l'autoloader que je configure pour lui préciser que telle librairie (en fait, le premier mot du namespace) est à tel dossier, donc j'ai aussi :

App_Model_Users

Ca permet une bonne structure et plusieurs librairies et l'application sans aucun soucis. Pour Php 5.3 tu peux simplement convertir :

Zend\Form\Element (notation AS zend.form.Element)
App\Model\Users (notation AS app.model.Users)

Je vois donc rapidement d'un coup d'oeil que le premier fait partie de la librairie Zend, etc, et que le deuxième c'est la mienne.

Re: Indécision pour les espaces de noms

par stealth35 » 21 juin 2011, 18:17

déjà je pense que par rapport au reste le root devrai être Wd

Wd\Core
Wd\Elements
Wd\Patron


pour le reste continue sur le modèle actuel
Wd\Core\ActiveRecord

par contre plutôt
Wd\Core\i18n\Locale
Wd\Core\Operation\Save
Wd\Core\Operation\Core\Ping


l'autoloader de base suis les dossiers

Wd\Core\Operation\Save -> /Wd/Core/Operation/Save.php


donc plus de dossier lib

Indécision pour les espaces de noms

par Gofromiel » 21 juin 2011, 12:38

Bonjour à tous,

Cela fait un moment que j'utilise les fonctionnalités de la version 5.3 de PHP dans mon framework et il ne manque plus que les espaces de noms, seulement voilà, je suis pris d'une indécision totale quant à la forme à adopter. Voyez-vous je ne suis pas fan des espaces de noms "comme l'arborescence de mes fichiers" parce que mon framework est avant tout modulaire et qu'on peut trouver des composants à de nombreux endroits : le framework lui même, le CMS Publishr, le dossier par défaut de l'application, le dossier du thème du site... Le framework peut-être aussi partagé par plusieurs installation auquel cas il n'est même pas à la racine du site. Bref, il me faut un espace de nom "avec du sens" plutôt que "géographique".

Pour le moment mes classes sont nommées ainsi : <flat_module_id>_<rootclass>. Selon ce gabarit, l'activerecord du module "system.nodes" a pour classe "system_nodes_WdActiveRecord". Comme je travaille beaucoup avec MooTools je serais tenté de transformer cela avec l'espace de noms suivant : "\ActiveRecord\SystemNodes", seulement je me dis que la classe EST l'active record et finalement SystemNodes l'espace de nom : SystemNodes\ActiveRecord...

Un autre exemple qui me rend très perplexe, les opérations. Les opérations (ou actions dans d'autres framework MVC) sont des instances de classes. La classe de base est "WdOperation" avec des variantes telles que "save_WdOperation", "delete_WdOperation", "'config_WdOperation"... et celles implémentées par les modules e.g. "system_nodes__save_WdOperation", "contents__save_WdOperation", "articles__save_WdOperation". J'ai pris ces trois derniers en exemples parce que le troisième hérite du deuxième qui hérite du premier.

Pour les types je pensais à quelque chose comme :

\Core\Operation
\Core\Operation\Save (puisque "Save" est un sous type d'opération)
\Core\Operation\Delete
\Core\Operation\Config...

Pour les modules je suis plus perplexe :

\articles\Core\Operation\Save
\Core\Operation\articles\Save
\Core\Operation\Save\articles

Je ne sais pas quoi choisir — tout m'a l'air nul — c'est pourquoi je cherche quelque conseil auprès des professionnels que vous êtes. Des suggestions ?