OVH Cloud OVH Cloud

Espaces de nommages

2 réponses
Avatar
Vincent Hiribarren
Bonjour,

ayant bricolé des fonctions que j'ai incluse dans un programme
existant qui n'est pas de moi, et je me suis rendu compte que
quelques-unes de mes fonctions avaient le même nom que celles déjà
existantes.

Ce qui serait alors pas mal, ce serait de pouvoir utiliser un espace
de nommage... cependant voilà, je suis en Php4, et une brève recherche
a indiqué que Php5 verrait l'introducation des espaces de nommages
"faisant cruellement défaut à Php4".

Bon, soit.

En attendant, y-a-t-il des trucs ou astuces existants pour simuler un
espace de nommage, pour que je puisse garder mes noms de fonctions et
ne pas toucher au code qui n'est pas de moi ?

Merci !

--
Un peu d'aléa dans ce monde de fatalité.
http://www.alea.net/usenet/

2 réponses

Avatar
Ganf
Le Mon, 30 Aug 2004 12:06:03 +0000, Vincent Hiribarren a écrit :

quelques-unes de mes fonctions avaient le même nom que celles déjà
existantes.



Le seul moyen d'éviter de tels conflits c'est de préfixer le nom de tes
fonctions/classes/variables avec le nom de ton application (en
choississant bien un nom qui n'est pas commun).

indiqué que Php5 verrait l'introducation des espaces de nommages
"faisant cruellement défaut à Php4".


L'information est obsolète. C'était un projet, qui a été abandonné.
PHP5 n'apporte malheureusement aucune amélioration coté espace de nom ou
gestion de paquets/modules

En attendant, y-a-t-il des trucs ou astuces existants pour simuler un
espace de nommage, pour que je puisse garder mes noms de fonctions et ne
pas toucher au code qui n'est pas de moi ?


function monnomamoi_mafonction() { }
au lieu de : function mafonction() { }

--
Eric Daspet

Avatar
Marc
Vincent Hiribarren wrote:

En attendant, y-a-t-il des trucs ou astuces existants pour simuler un
espace de nommage, pour que je puisse garder mes noms de fonctions et
ne pas toucher au code qui n'est pas de moi ?


oui,

1 - ne pas declarer de facon inconsidérée des variables et des fonctions
en espace globle,

2 - prefixer les variables et fonctions pour eviter les collisions

ou mieux :

3 - apprivoiser la notation objet sans parler de conception
pure OO

include('mon_appli.php');

$app = new MonAppli();

$app->ma_variable = 1234;

if($app->ca_va_mal()) {
$app->afficher_message();
} else
$app->tout_va_bien();

$app->on_continue();

$app->le_final();


et la classe :

class MonAppli{
var $ma_variable;
var $db;
var $caddie;
var $config;

function MonAppli(){
$this->init();
}
function init(){
$this->config = new Config();
$this->db = new Db($this->config);
# ...
}
function ca_va_mal(){
if ($this->ma_variable < 1234)
return false;
else
return true;
}
function tout_va_bien(){
echo "ca baignen";
}
function le_final(){
echo "c'est purement fictif ... n";
echo "</body>n</html>n";
}
}


dans ce code, il n'y a qu'une seule et une seule variable globale
et la classe n'en connait pas une seule. Apres tout est référence
sur $app et des sous-classes imbriquée.

il s'agit d'une exemple typique de ce qu'on pourrait voir et qui
marcherait certainement mieux que du pauvre code procedural et encore
quand il l'est ...

Mon fils est en train d'apprivoiser php et le modele objet. Il
a 15ans et entre en seconde. Il s'amuse bien, il a l'esprit assez
creatif, j'ai du plaisir a le voir.

Je regrette de ne pas voir assez souvent des exemples concrets
et faciles a lire de petites applications php concues objet.

On pourrait lancer quelque petits exercices de conception
bien adaptés aux application Web et php. Il a réalisé un pseudo
chat ainsi que le jeu de l'alumette ou il faut prendre ou laisser
la derniere allumette, je ne sais plus.

Sans aller jusqu'a la realisation complete de l'application, on
pourrait ecrire les différentes classes, les attributs, les methodes,
faire un peu de conception quoi ...

si le coeur vous en dit ...