OVH Cloud OVH Cloud

Ecrire une classe

9 réponses
Avatar
Sebastien
Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?

Par exemple, dans un fichiers, je place la classe, ses attributs et ses
méthodes, puis dans d'autres fichiers les implémentations des méthodes.

Je dis ça, parce que j'ai une classe qui atteint 1500 lignes, ( je sais,
c'est beaucoup trop pour une meme classe) , et j'aimerais simplement
pouvoir travailler sur des fichiers séparés et plus petits.

Si quelqu'un sait comment faire, ou a autre chose à me proposer, je suis
preneur, merci

a+

--
Sebastien

9 réponses

Avatar
Bruno Desthuilliers
Sebastien wrote:
Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?

(snip)


Je dis ça, parce que j'ai une classe qui atteint 1500 lignes, ( je sais,
c'est beaucoup trop pour une meme classe)


C'est beaucoup trop pour une même classe !-)

AMHA, au lieu de vouloir répartir l'implémentation de ta classe dans
plusieurs fichiers, tu devrais plutôt revoir ton design, et splitter ta
classe en plusieurs classes et fonctions.

Mes deux centimes...
Bruno

Avatar
Sebastien
Sebastien wrote:
Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?

(snip)


Je dis ça, parce que j'ai une classe qui atteint 1500 lignes, ( je sais,
c'est beaucoup trop pour une meme classe)


C'est beaucoup trop pour une même classe !-)

AMHA, au lieu de vouloir répartir l'implémentation de ta classe dans
plusieurs fichiers, tu devrais plutôt revoir ton design, et splitter ta
classe en plusieurs classes et fonctions.

Oui, ça je sais, je devrais le faire, mais quand meme, je voudrais

savoir si c'est possible.


Mes deux centimes...
Bruno



--
Sebastien


Avatar
cmeresse
Par exemple, dans un fichiers, je place la classe, ses attributs et ses
méthodes, puis dans d'autres fichiers les implémentations des méthodes.

Utilise la fonction include ou require

http://ch.php.net/manual/fr/function.include.php
http://ch.php.net/manual/fr/function.require.php

Christophe

Avatar
Cedric
Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?


Une autre possibilité est d'ecrire plusieurs classes en les faisant hériter
l'une de l'autre.

C'est pas forcément propre si c'est utiliser seulement pour "alléger" ta
classe, par contre si tu as un problème de conception, l'héritage est
parfois la bonne solution.

- exemple pour les newbies :
Au lieu de faire une classe voiture avec toutes les fonctionnalités et
propriétés :
Faire une classe véhicule avec certaines fonctionnalités (ex :démarer) et
propriétés
et une classe voiture qui hérite de véhicule pour ajouter les
fonctionnalités et propriétés (ex : 4 roues) manquantes

http://www.php.net/manual/fr/keyword.extends.php

--
Cedric ou Zinzan
http://www.myfirstpage.com [ma pub] <-- enfin un site vraiment utile et
vraiment gratuit...
http://www.louard.com/zinzan.html <-- pour tout savoir sur (le vrai)
zinzan...

Avatar
Sebastien Lardiere
Cedric wrote:
Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?



Une autre possibilité est d'ecrire plusieurs classes en les faisant hériter
l'une de l'autre.


L'héritage est a utiliser dans des cas bien précis. Dans mon cas, ca ne
correspond pas vraiment, ca serait plutot des relations d'utilisation,
je suis en train d'étudier ça.

Mais ca ne répond pas a ma question de savoir si je peux implémenter une
fonction en dehors de la déclaration de la classe, comme en C++.

--
Sebastien


Avatar
Bruno Desthuilliers
Sebastien wrote:

Sebastien wrote:

Est-ce qu'il est possible d'écrire une classe dans plusieurs fichiers ?

(snip)


Je dis ça, parce que j'ai une classe qui atteint 1500 lignes, ( je
sais, c'est beaucoup trop pour une meme classe)



C'est beaucoup trop pour une même classe !-)

AMHA, au lieu de vouloir répartir l'implémentation de ta classe dans
plusieurs fichiers, tu devrais plutôt revoir ton design, et splitter
ta classe en plusieurs classes et fonctions.

Oui, ça je sais, je devrais le faire, mais quand meme, je voudrais

savoir si c'est possible.


Oui, je sais que tu sais, mais quand même, si tu sais ce que tu
*devrais* faire, pourquoi ne pas le faire ?-)



Avatar
charly
Mais ca ne répond pas a ma question de savoir si je peux implémenter une
fonction en dehors de la déclaration de la classe, comme en C++.



Il me semble que l'on t'a répondu correctement :
Tu mets ton implémentation dans un autre fichier que tu include

class toto{

var nom;
toto{include ('consToto.php');}

}
Ok c'est de la triche / C++ mais bon on fait comme on peut :)

Ou j'ai loupé un épisode ?

Avatar
Sebastien
Tu mets ton implémentation dans un autre fichier que tu include

class toto{

var nom;
toto{include ('consToto.php');}

}
Ok c'est de la triche / C++ mais bon on fait comme on peut :)

Ou j'ai loupé un épisode ?


Non, tu n'as pas loupé d'épisode, mais ca ne me plait pas du tout comme
facon de faire, vu qu'après, je suis obligé d'avoir un fichier par
fonction, ce qui va etre rapidement ingérable :-(

Ou est-ce qu'on peut demander des améliorations pour PHP5 :

MaClasse.php
-----------------------------------------
<?php

class MaClasse {

private var i ;

public function geti();
public function seti( i );
}

?>

Autrefichier.php
-----------------------------------------
<?php

function MaClasse::geti() {
// implémentation
}

function MaClasse::seti(i) {
// implémentation
}

?>

a+
--
Sebastien

Avatar
charly
Tant qu'à tricher On peux aussi faire comme ca :

class toto{

include "implem_toto.php"

// function getNom()
// function setNom()

}

Je sais c'est pire :)

Blague à part, peut-être dans des versions ultérieures...

D'un autre coté, l'objet en PHP, vu les problèmes de conservation des
objets d'une page à l'autre, moi ca me laisse dubitatif.
PAS DE TROLL LA DESSUS : c'est une opinion qui n'engage que moi et ceux
qui ne sont pas d'accord avec ce point de vue, fort bien :)
Maintenant, si on pouvait transférer les objets comme en Java-Jsp dans
la session, ce serait différent (future mouture peut-être : je ne suis
pas l'actualité d'assez près :) )

Au fait, en parlant de fichiers ingérables, y-a-t-il un IDE qui fait
liste les fonctions d'un fichier me permettant d'atteindre sa
déclaration en cliquant sur son nom ?

Parce que c'est fastidieux de chercher le nom de la fonction dans
ultraedit :)