forum php objet? - Programmation
Marsh Posté le 10-12-2001 à 16:24:27
moi j evite de bosser en objet pour plusieurs raisons (je parles pour du php)
- Je trouve ca chiant a faire (ok c est pas une tres bonne raison)
- Ca ralentit le temps d execution
- et je ne trouve pas vraiment d utilité a l utilisation de classes etant donnée que je n ai jamais enormement de classes communes dans les applis que j utilises. Je prefere la methode scripts
Marsh Posté le 11-12-2001 à 02:29:45
je suis en train de tenter le coup
je te dirai quoi dans qq semaines... si tout va bien
je pousse actuellement pas à ce point "forum->discussion->message->propriété_de_message"
je me limite à un truc du genre, p.ex pour l'affichage des topics :
$topic= new topic($idTopic);
$topic->liste();
while ($topic->next()){
echo $topic->getSujet();
echo $topic->getSender();
echo $topic->getDate();
...
}
sauf que je ne fais pas d'echo puisque je travaille avec la classe FastTemplate (voir sur google).
Question développement c'est pas mal
Mais pour le moment j'ai pas du tout (mais alors vraiment pas du tout !!) optimisé ma BD, ce qui fait que chaque topic ajouté prend 0.016 secondes en plus (sur un PII 433cel 320Mb Ram)...
pour 35 topics : Page générée en 0.448 secondes
(dans ma table topic je stocke l'id du message et l'id du dernier message, ce qui me permet d'afficher le nom du posteur et les dates etc,... (tu vois le genre )
Si qq veux collaborer avec moi dans le déeloppement, je suis pas contre
Marsh Posté le 11-12-2001 à 09:20:14
Le Forum en PHP que je suis en train de développer est sur une programmation orientée objet...
Rien n'impose de la faire, c'est pas plus rapide, plus lent je pense pas vraiment, c'est surtout que c'est super pratique, tu peux en deux pas trois mouvements changer toutes l'interface graphique par exemple, mais bien d'autres chose encore... De plus tu peux te construire des outils ("classes" ) qui peuvent te reservir sur d'autres projet.
Je trouve ça super sympa les objets, et puis je suis en train de me mettre au C++, ce qui me permet aussi de me familiariser avec ce style de programmation.
@+
Marsh Posté le 11-12-2001 à 10:06:53
Si vous cherchez des idées sympas pour votre projet de forum objet, vous pouvez matter les sources de Vbulletin à ce niveau la c est vraiment le top en matiere de gestion des classes, templates...
Marsh Posté le 11-12-2001 à 11:26:16
Oreste a écrit a écrit : Si vous cherchez des idées sympas pour votre projet de forum objet, vous pouvez matter les sources de Vbulletin à ce niveau la c est vraiment le top en matiere de gestion des classes, templates... |
j'y vais de ce pas
je savais pas que ça existait déjà et c'est justement pour cela que j'en développais un
ouiiiinnn je suis pas le premier
fly LM> tu veux pas t'associer avec moi ?
Marsh Posté le 11-12-2001 à 11:36:48
bon j'ai commencer hier, sans avoir connaitre l'orientation objet avant et je trouve ca tres bien.
Ca permet de vraiment separer les function...d'etre sur d'avoir ses variable a disposition..etc...
pour l'instant je suis partit sur
-une class communaute dont une propriétée peut etre une collection d'objet forum
-une class forum dont une propriété peut etre une collection d'objet discussion
-une class discussion dont une propriétée peut etre une collection d'objet message
-une class message
j'adopte le principe de deux constructeur different selon le nombre de variables passée...voir cette article pour plus de detail
http://www.phpbuilder.com/columns/ [...] hp3?page=5
si je ne passe que l'id d'un obljet, genre
Exemple sur la page d'accueil du forum (ou plutot de la communaute) je cree un objet communaute, une methode de cette class s'appelle get_forum, elle me permet d'affecter a une propriétée de communaute la collection d'objet forum present dans cette communaute (là j'utilise le constructeur a plusieurs variables pour creer chaque objet depuis des informations passées ).
MAis sur la page Forum qui liste les discussion j'appelle le constructeur de forum juste par l'id
$myforum=new forum($id);
ce constructeur ne fait pas juste remplir les propriétées avec des valeurs passée mais fait une requette pour remlplir les propriété...
Si j'ai été clair vous comprendrez qu'il en est de meme pour les objets discussion qui peuvent etre crée depuis la class forum ou toute seule...
moi aussi j'ai decider de differencier le contenu du contenant...
Ce qui fait qu'avant meme d'afficher la moindre ligne de html j'ai deja tout mes objets remplit, (la je me demande si l'affichage ne va pas etre trop lent). ce qui permettra de gerer les erreurs
J'ai trouver la programmation objet tres ...logique et evolutive(si on ajoute des propriété a un objet aucun souci), tres propres aussi (plus de variable a l'infini... que des propriétées d'objet...)Certains disent que ce n'est pas tout a fait adapter au oueb... c'est vrai puisque la durée de vie d'un objet se limite a la durée de vie de la page qui n'est pas bien longue et kil faut le reconstruire la page suivante...
En treme de developpement au sein d'une equipe il faut que tut le monde comprenne et accepte cette orientation, mais pour un developpement isolé c'est super.
Marsh Posté le 11-12-2001 à 12:00:35
speedyop a écrit a écrit : bon j'ai commencer hier, sans avoir connaitre l'orientation objet avant et je trouve ca tres bien. Ca permet de vraiment separer les function...d'etre sur d'avoir ses variable a disposition..etc... idem pour l'instant je suis partit sur -une class communaute dont une propriétée peut etre une collection d'objet forum =ma classe forum -une class forum dont une propriété peut etre une collection d'objet discussion =ma classe topic -une class discussion dont une propriétée peut etre une collection d'objet message =ma classe message -une class message ma classe précédente le fait j'adopte le principe de deux constructeur different selon le nombre de variables passée... moi plus au moins aussi, si je lui passe un id, il remplit la classe avec l'objet qui correspond dans la BD si je ne lui passe rien, il ma crée un objet vide si je veux la liste de tout les objet (pour afficher la liste des topic par exemple) je la construis vide et j'applique la méthode ->liste() dessus. voir cette article pour plus de detail http://www.phpbuilder.com/columns/ [...] hp3?page=5 si je ne passe que l'id d'un obljet, genre Exemple sur la page d'accueil du forum (ou plutot de la communaute) je cree un objet communaute, une methode de cette class s'appelle get_forum, elle me permet d'affecter a une propriétée de communaute la collection d'objet forum present dans cette communaute (là j'utilise le constructeur a plusieurs variables pour creer chaque objet depuis des informations passées ). idem MAis sur la page Forum qui liste les discussion j'appelle le constructeur de forum juste par l'id $myforum=new forum($id); idem, mais juste pour afficher le titre du forum, pas pour afficher les topics ce constructeur ne fait pas juste remplir les propriétées avec des valeurs passée mais fait une requette pour remplir les propriété... idem Si j'ai été clair vous comprendrez qu'il en est de meme pour les objets discussion qui peuvent etre crée depuis la class forum ou toute seule... sans problème moi aussi j'ai decider de differencier le contenu du contenant... Ce qui fait qu'avant meme d'afficher la moindre ligne de html j'ai deja tout mes objets remplit, (la je me demande si l'affichage ne va pas etre trop lent). ce qui permettra de gerer les erreurs idem J'ai trouver la programmation objet tres ...logique et evolutive(si on ajoute des propriété a un objet aucun souci), tres propres aussi (plus de variable a l'infini... que des propriétées d'objet...)Certains disent que ce n'est pas tout a fait adapter au oueb... c'est vrai puisque la durée de vie d'un objet se limite a la durée de vie de la page qui n'est pas bien longue et kil faut le reconstruire la page suivante... En terme de developpement au sein d'une equipe il faut que tout le monde comprenne et accepte cette orientation, mais pour un developpement isolé c'est super. |
je suis d'accord, et comme je l'ai dit, ça pourrait être cool de former une équipe
j'ai aussi une classe User (toute personne inscrite sur le forum) et une classe RegisteredUser (les personnes connectées).
Cela me permet de faire une gestion des droits.
Je suis en train de constituer une classe Error pour l'affichage de messages d'erreurs multilingue.
Une classe SQL qui gère les requêtes pour moi.
Marsh Posté le 11-12-2001 à 12:03:46
ethernal a écrit a écrit : fly LM> tu veux pas t'associer avec moi ? |
Tu sais pour l'instant, j'ai pas fait grand chose, ma db est prête, je pense que sa structure est cohérente, mais j'ai pas encore commencé à coder l'affichage des discussions, ni le post... En gros il y a que l'affichage des rubriques du forum qui est bien avancé (on fait ce qu'on peut)(pas de base de données pour cela, un format à moi...)
J'ai une classe qui s'occupe de la gestion de l'affichage et de récuperer les informations dans le fichier de conf des rubriques...)
C'est assez rapide, sur un celeron 300 Mhz, 128 Mo, il faut en gros 9 à 11 ms pour générer sachant que le serveur "n'avait que cela à faire". Bon, faut dire qu'il n'a pas grand chose à faire non plus !!!
Pour la collaboration, je ne suis pas forcement contre, le problème c'est que je peux ne pas avoir le temps d'un jour à l'autre de la continuer... Là j'ai un peu de temps donc je l'ai commencé, et puis c'est aussi un produit (dans une version retravaillée graphiquement pour coller au site et la charte graphique du client) succeptible d'être vendu pour certains de mes projets... Cela n'empêche pas d'en discuter, d'échanger nos idées, nos sources, moi cela me dérange pas...
Marsh Posté le 11-12-2001 à 12:14:09
C'est intéressant comme approche, mais je suis un peu sceptique quand a son efficatité, en comparaison au fonction préimplémentée dans php.
Surtout lors de la création de vos objets message. Car si je suis logigue avec moi-même (ce qui est parfoit loin d'être le cas ) lorsque que vous crée un objet "topic" contenant tous les post, chaque poste étant un objet "indépendant" des autre, il requiert un nouvel acces à la DB. Et tout cela, ca risque de devenir très lourd.
Marsh Posté le 11-12-2001 à 12:15:27
fly LM a écrit a écrit : Tu sais pour l'instant, j'ai pas fait grand chose, ma db est prête, je pense que sa structure est cohérente, mais j'ai pas encore commencé à coder l'affichage des discussions, ni le post... En gros il y a que l'affichage des rubriques du forum qui est bien avancé (on fait ce qu'on peut)(pas de base de données pour cela, un format à moi...) J'ai une classe qui s'occupe de la gestion de l'affichage et de récuperer les informations dans le fichier de conf des rubriques...) bha tu sais moi non plus j'en suis pas très loin -j'ai une BD (comme je l'ai dis pas du tout optimisée...) -quelques classes définies mais pas encore finies ou à modifier, et avec de gros points d'interrogations de développement à la clé. -un affichage très succint (bha oui avec les templates, moi je demande juste que ça m'affiche des infos, que ce soit beau ou pas c pas mon problème actuellement) C'est assez rapide, sur un celeron 300 Mhz, 128 Mo, il faut en gros 9 à 11 ms pour générer sachant que le serveur "n'avait que cela à faire". Bon, faut dire qu'il n'a pas grand chose à faire non plus !!! Pour la collaboration, je ne suis pas forcement contre, le problème c'est que je peux ne pas avoir le temps d'un jour à l'autre de la continuer... Là j'ai un peu de temps donc je l'ai commencé, et puis c'est aussi un produit (dans une version retravaillée graphiquement pour coller au site et la charte graphique du client) succeptible d'être vendu pour certains de mes projets... Cela n'empêche pas d'en discuter, d'échanger nos idées, nos sources, moi cela me dérange pas... |
okaye rien qu'un échange d'idée pourrait être très bénéfique
je pense, si tu veux faire qqch tu sais ou me trouver
Marsh Posté le 11-12-2001 à 12:23:53
gizmo a écrit a écrit : C'est intéressant comme approche, mais je suis un peu sceptique quand a son efficatité, en comparaison au fonction préimplémentée dans php. Surtout lors de la création de vos objets message. Car si je suis logigue avec moi-même (ce qui est parfoit loin d'être le cas ) lorsque que vous crée un objet "topic" contenant tous les post, chaque poste étant un objet "indépendant" des autre, il requiert un nouvel acces à la DB. Et tout cela, ca risque de devenir très lourd. |
hum ...
chez moi la page qui affiche tout les messages reçoit en argument ?idtopic=x
je fais un
$message= new Message(); //charge un objet vide de type message
$message->liste($idtopic); //définit une requête "select id, message, ... from Messages where topic_id='$idtopic'";
while ( $message->next() ) {
echo $message->getMessage();
...
}
donc une seule requête...
par contre là ou je suis d'accord, c'est que pour afficher le nom du forum par exemple au dessus de la liste des topics, je remplit entièrement mon objet pour avoir uniquement le titre...
faire un "select libel from Forums where id='$id'" est-il plus rapide que de faire un "select id,libel,description,date,heure from Forums where id='$id'" ? telle est la question ..
Marsh Posté le 11-12-2001 à 12:31:23
l'echange d'idée est idéeale.. on a chacun nos gout, contraintes, motivations et idées ...
Les gout et les couleurs ne se discutant pas, les contraintes etant comme leur nom l'indique contraignante, les motivations pouvant disparaitre comme elles sont venues... reste l'echange d'idée .
Ethernal: on a quand meme la meme vision , je voulais aussi me faire une classe db_query, user et error
Gizmo: gizmo pas du tout! un objet peut etre construit avec une requtte mais peut aussi etre construit dans mla classe parent (une requette pour tout les objet)
... en gros:
class discussion
{
var $id;
var $nb_forum;
var $message; //--collection d'objet message
[...]
function get_message()
{
$query ="select id,titre,corps from message where refdiscussion=".$this->id;
if ($result=mysql_query($query))
{
$this->nb_forum=mysql_num_rows($result);
if ($this->nb_forum>0)
{
for ($x=0;$x<=$this->nb_forum;$x++)
{
$row=mysql_fetch_array($result);
$this->message=new message($row[id],$row[corps],$row[titre]),
}
}
}
else
{
//gestion erreur connection
}
}
[...]
}
bon j'ai la flemme d'ecrire la classe message mais tu voit le style?
[edtdd]--Message édité par speedyop--[/edtdd]
Marsh Posté le 11-12-2001 à 12:34:24
ethernal a écrit a écrit : hum ... chez moi la page qui affiche tout les messages reçoit en argument ?idtopic=x je fais un $message= new Message(); //charge un objet vide de type message $message->liste($idtopic); //définit une requête "select id, message, ... from Messages where topic_id='$idtopic'"; while ( $message->next() ) { echo $message->getMessage(); ... } donc une seule requête... par contre là ou je suis d'accord, c'est que pour afficher le nom du forum par exemple au dessus de la liste des topics, je remplit entièrement mon objet pour avoir uniquement le titre... faire un "select libel from Forums where id='$id'" est-il plus rapide que de faire un "select id,libel,description,date,heure from Forums where id='$id'" ? telle est la question .. |
ok, dans ce cas, c'est assez équivalent, mais c'est une approche quand même un peux détournée de l'objet, vu que c'est plutot une liste DANS l'objet message qu'une liste d'ojets message.
Sinon, pour ta question, c'est effectivement bien plus rapide de ne prendre que ce qui t'intéresse.
Marsh Posté le 11-12-2001 à 12:42:01
c'est l'acces au SQL qui est lent non? ensuite que tu prenne une ou deux valeur dans la meme table ca doit etre infime comme difference...
note pour l'objet db_query:enclencher un chrono avant l'execution de la requette et l'arreter juste apres, retourner la difference dans une propriétées.
Marsh Posté le 11-12-2001 à 12:43:51
gizmo a écrit a écrit : ok, dans ce cas, c'est assez équivalent, mais c'est une approche quand même un peux détournée de l'objet, vu que c'est plutot une liste DANS l'objet message qu'une liste d'ojets message. oui en effet, ça fait partie de mes questions de développement... je me suis demandé si je devais faire un objet liste de forum, topic, message, ou faire comme Speedyop. Un objet qui a une liste d'objets comme attribut, ça devenait un peu lourd à gérer. Mais pour le test c'était pas vraiment utile j'ai trouvé, mais ce n'est plus à ce moment là du pur objet Sinon, pour ta question, c'est effectivement bien plus rapide de ne prendre que ce qui t'intéresse. ok |
là je vois speedyop qu'on a des différences de développement
Marsh Posté le 11-12-2001 à 12:46:32
speedyop a écrit a écrit : c'est l'acces au SQL qui est lent non? ensuite que tu prenne une ou deux valeur dans la meme table ca doit etre infime comme difference... note pour l'objet db_query:enclencher un chrono avant l'execution de la requette et l'arreter juste apres, retourner la difference dans une propriétées. |
non, si ton index est bien fait l'acces est assez rapide, ce qui prend du temps, c'est de prendre des variable de taille indéfini parce que le gestionaire doit lire les valeur "a la main" pour trouver un délimiteur. C'est pour ca qu'il est souvent plus intéressant de prendre un char plutot qu'un varchar si la place n'est pas problème.
Marsh Posté le 11-12-2001 à 12:50:50
gizmo a écrit a écrit : non, si ton index est bien fait l'acces est assez rapide, ce qui prend du temps, c'est de prendre des variable de taille indéfini parce que le gestionaire doit lire les valeur "a la main" pour trouver un délimiteur. C'est pour ca qu'il est souvent plus intéressant de prendre un char plutot qu'un varchar si la place n'est pas problème. |
ok, dans ce cas faut que je revoit les type de mes base j'ai mis que des int,text et datetime
Marsh Posté le 11-12-2001 à 12:52:32
int, c'est bon, datetime aussi vu que la taille est connue, par contre les texte, faut voir si c'est partout nécessaire.
Marsh Posté le 11-12-2001 à 13:00:02
Citation : non, si ton index est bien fait l'acces est assez rapide, ce qui prend du temps, c'est de prendre des variable de taille indéfini parce que le gestionaire doit lire les valeur "a la main" pour trouver un délimiteur. C'est pour ca qu'il est souvent plus intéressant de prendre un char plutot qu'un varchar si la place n'est pas problème. |
oula la moi aussi va falloir que je revoie tout ça
si tu veux voir les sources et suivre le développemet : http://www.ethernal.be/test/
(ouais je sais je me refuse rien )
[edtdd]--Message édité par ethernal--[/edtdd]
Marsh Posté le 11-12-2001 à 13:04:46
ca coute combien un .be? faut encore être un organisme ou monsieur tout le monde peux s'en acheter un?
Marsh Posté le 11-12-2001 à 13:08:24
gizmo a écrit a écrit : ca coute combien un .be? faut encore être un organisme ou monsieur tout le monde peux s'en acheter un? |
entre 2.000fb et 3.500fb la première annéee chez ton isp.
mais, tu sais trouver des sociétés qui te le font pour 1500fb.
Tout le monde peut en acheter un.
avec une redir ou tu veux
joli score, tu es monté jusqu'à 3 clics en 1 secondes, encore un pro de la souris
[edtdd]--Message édité par ethernal--[/edtdd]
Marsh Posté le 11-12-2001 à 13:24:31
je viens d'acheter mon nom de domaine...ptain dure d'en trouver un maintenant! faut pas esperer en dessous de 8 lettres!
alors c'est FooForum (Forum Oject Oriented )
Marsh Posté le 11-12-2001 à 13:34:25
il y a déjà tellement de forum... enfin, faut plutot dire pour ceux qui aiment les utiliser.
kesse t'en penses alors ?
Marsh Posté le 11-12-2001 à 13:49:49
ethernal a écrit a écrit : il y a déjà tellement de forum... enfin, faut plutot dire pour ceux qui aiment les utiliser. mais j'ai mon idée derriere la tete ,c'est clair que redevelopper un xieme forum ca sert a rien kesse t'en penses alors ? euh ki? |
Marsh Posté le 11-12-2001 à 13:54:12
skylight a écrit a écrit : le mien vient juste de planter hier ... alors bon |
planter, c'est vite dit, disons plutot que tu as fait le nettoyage par le vide
[edtdd]--Message édité par gizmo--[/edtdd]
Marsh Posté le 11-12-2001 à 13:56:05
en fait j'avais un autre sujet qui a pas marché mais ki appartient au meme projet
http://forum.hardware.fr/forum2.ph [...] owntopic=1
Marsh Posté le 11-12-2001 à 13:56:23
speedyop>que penses tu de mes sources ?
moi aussi, j'ai une petite idée de ce que je veux faire
ça tombe c'est la même...
skylight> comment tu as fait pour en arriver là ?
Marsh Posté le 11-12-2001 à 13:58:06
speedyop a écrit a écrit : en fait j'avais un autre sujet qui a pas marché mais ki appartient au meme projet http://forum.hardware.fr/forum2.ph [...] owntopic=1 |
j'ai trouvé ça un peu tiré par les cheveux
mais c pas mal
Marsh Posté le 11-12-2001 à 13:58:59
ethernal a écrit a écrit : speedyop>que penses tu de mes sources ? moi aussi, j'ai une petite idée de ce que je veux faire ça tombe c'est la même... skylight> comment tu as fait pour en arriver là ? |
tu connais la fonction drop table?
Marsh Posté le 11-12-2001 à 14:00:40
gizmo a écrit a écrit : tu connais la fonction drop table? |
drop database
Marsh Posté le 11-12-2001 à 14:05:17
Vous êtes vaches avec skylight, il a bien bossé quand même...
Et puis on lui a tellement inscrit de trucs un peu partout (petits trous de sécurité) dans sa base que la meilleur façon était de tout vider (enfin non !!! pas tout quand même, tu déconnes sky. )
hihi
[edtdd]--Message édité par fly LM--[/edtdd]
Marsh Posté le 11-12-2001 à 14:07:05
et le pire de tout c que j'avai fait un test de drop table conditionnel ...
et la condition etait fgezrgr = fezf
au lieu de rezgze == gzedfc
[edtdd]--Message édité par skylight--[/edtdd]
Marsh Posté le 11-12-2001 à 14:12:46
skylight a écrit a écrit : http://forum.hardware.fr/forum2.ph [...] owntopic=1 |
Super, marche pas bien la reconnaissance des smilies...Ou alors c'est bridé à 10 smilies. hummm ???
[edtdd]--Message édité par fly LM--[/edtdd]
Marsh Posté le 11-12-2001 à 14:17:26
ReplyMarsh Posté le 11-12-2001 à 14:18:21
Hop voila comme prévu je met les sources de ma nouvelle version !
http://e-sky.dyndns.org/downloadfrm.php
Version RC1 (11/12/01)
changements :
-ne nécéssite qu'une seule base, meme pour les multiforums (cf PPC)
-autocookie dès qu'on répond
-corrigé le pb des topics inexistants et qu'on pouvait poster dedans ... (vous pouviez créer un nouveau topic, vous n"aviez pas le 1° mesage koi)
-diminué sensiblement le nb de requetes sql
-accès aux forums privés sur cookie (mais possibilité de supprimer la cookie quand on veu)
-ds le select des catégorie du bas, les forums privés visibles n'apparaissent plus ds le select.
-changements mineurs de l'interface
-Ajout de 2 pages pour la gestion des smileys et de la censure
-possibilité de mettre une annonce en haut de chaque catégorie
-la fermeture du forum se fait en fichier texte et non par requete SQL : en gros si vous fermez le forum, vous pourrez operer comme bon vous semble sur la bdd, chaque page du forum faisant appel a la page fermeture.php, cette derniere lit un fichier en mode binaire et fait un die(), et non une requete ds la bdd (bah oui si on ferme un forum, c'est pour operer sur la bdd... or un forum fermé mais qui fait appel a la bdd...)
-regroupement des pages post.php, newtopic.php et edtmsg.php dans une grosse page message.php (meilleure sécurité)
-possibilité pour l'utilisateur lambda de supprimer son message en l'éditant
-correction d'autres bugs mineurs
-correction de la page install.php, disparition des login/pass de la base dans les autres pages.
-possibilité de choisir le nom de la base du forum
voila !
A+
toutefois, si vous pouviez installer et tester le forum ca serait kwel (il ne demande qu'une base sql)
Marsh Posté le 10-12-2001 à 15:42:56
pkoa ne pas faire les forum en objet
site->forum->discussion->message->propriété_de_message
je commence me pencher sur les objet qui ont l'air tres interessant pour avoir du code clair et bien structuré et les forums me semblenet tres objectisable
vos avis, experiences, commentaires?