Php events - comment rendre php évenementiel cote server

Soyez le premier à donner votre avis sur cette source.

Vue 14 629 fois - Téléchargée 1 251 fois

Description

On est aux portes d'une nouvelle ére au niveau technique. La POO à pris le pas sur le code linéaire depuis quelques années. Je rensent cependant une certaine amértume en voyant la lenteur de l'évolution du php.

On se trouve face à deux grand types d'achitectures server : DOTNET vs JAVA, et le php est bien loin à la traîne. Cela ne vient pas forcément des possibilités syntaxiques ou bien encore de la vitesse d'execution, mais cela peut tout simplement venir des difficultés de structurer ses sites.

J'ai eu l'occasion de travailler sous dotnet quelque temps. Les points forts de ce language sont les suivants :

- Le code n'est pas mélangé avec les sorties HTML
- Il est évenementiel
- Il est entiérement orienté objet

Je vous propose de nous intéréser de plus prés à l'aspect POO et évenementiel :

1. POO :

Le php permet de créer des classes et bien plus en version 5. Pour des raisons de compatibilité je ne publie pas et j'évite d'utiliser les syntaxes PHP5 même si celles-ci sont trés utiles.

La POO permet de mieux structurer son code, et de s'approcher a l'organisation de DOTNET. Je vous donne un exemple :

<?php
require_once('load_classes.php');

class form1 extends input_form {
function OnPost() {
echo ' * FORM 1 POSTED !<hr />';
}
}

class btn1 extends input_button {
function OnClick() {
echo ' * On vient de cliquer sur le boutton 1 !<hr />';
}
}

$form1 = new form1();
$btn1 = new btn1();
$btn1->action = 'submit';
$btn1->label = 'Valider le formulaire ! (btn1)';

?>
<?php $form1->__Header(); ?>
<?php $btn1->__Render(); ?>
<?php $form1->__Footer(); ?>

Vous avez donc dans ce genre de code 4 phases qui existent aussi sous DOTNET :

1 - Definition
2 - Instantiation
3 - Execution
4 - Sortie HTML

Cela permet de mieux gérer d'une part les sorties graphiques, et d'une autre part de mieux organiser le code-source.

2 . Evenementiel

L'autre approche est de créer des objet, rendus graphiquement visibles à l'utilisateur en HTML et qui peuvent évoquer des évenements : click sur un boutton, modification d'un texte, etc ...

Tout cela n'est pas natif, mais est possibile grace à l'héritage, et la surcharge de fonctions. Vous définissez dans la classe de l'objet, ainsi que les différentes fonctions permettant d'evenement. Lors de la sortie HTTP ou lors de l'instanciation de l'objet vous pouvez appeller ces différentes fonctions selon l'environement que vous avez définit.
(en PHP5 avec les interface et les classes abstraites, tout cela devient encore plus dément ...)

Un exemple concret vous est fournit dans le zip, contenant la gestion d'évenements sur des bouttons, formulaires et zones de textes. Celui-ci contient en plus la documentation compléte de ces classes sous les deux versions PHP.

Le but n'étant pas d'implémenter ces différents objet, mais plutôt de gerer des evenements en exemple, les differentes classes sont assez pauvres en fonctions.

Si vous améliorez ces classes, ou vous en construisez d'autres sur le modéle fournit vous pouvez me les envoyer à l'adresse suivante : cchiriac1983 [at] yahoo.com, je les ajouterais aux classes existantes.

Conclusion :


Les classes sont définies sous PHP4 et PHP5. Aucune modification n'est necessaire pour executer le code sous ces 2 versions de PHP.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Zzarbi974
Messages postés
8
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
21 novembre 2006

Heu pour la source, il y a quelques petits oubli de <?php au lieu de <? dans les fichier PHP5 (Oui je sais c'est pas grave ^^)
Sinon oui le code est très clair, mais je ne vois pas l'utilisé d'un tel code, je le trouve beaucoup trop lourd à implémenter.

Moi je pense qu'il vaut mieux laisser la structure ".net" pour du ".net" (On va pas faire du vin avec des pommes !).

Ensuite pour le reste du débat je suis plustôt d'accord avec MALALAM, je pense que PHP n'est plus depuis longtemps un langage amateur... C'est une image que je déteste. Encore aujourd'hui dans les écoles d'ingénieur (j'y suis encore ^^) on nous le dit souvent que PHP n'arrive pas à la cheville de .Net. Je ne dit pas que PHP est plus puissant que .Net je dit juste que c'est différent, mais équivalent, chacun est meilleur dans un domaine. Personnelment je pense que .Net est beaucoup adapté pour les solutions Intranet...

Cependant j'aimerais bien voir les résultats de ces benchs si ça ce fait :)
cs_Antidote
Messages postés
163
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
8 mai 2010

Heu bon je vais paraitre stupide mais bon, je me jette à l'eau.

Pure théorie, admettons les benchmarks, certe c'est un résultat concret. Encore faut-il comparer ce qui est comparable et de la bonne manière. Comparer un compilé à de l'interprété ou a du semi interprété, on connait déjà l'ordre des gagnants même en prenant le meilleur d'un côté et le plus mauvais de l'autre. Revenons à des choses comparables et comparons les de la bonne façon.

Admettons X et Y deux langages de la même catégorie et deux programmes identique dans chaque langage.

X s'exécute en trois secondes et Y en 6 secondes. VERDICT ?

Continuons, X consomme 20 Mega de RAM, Y consomme 2 Mega de RAM.

Maintenant admettons que chaque programme soit lancé 100 fois simultanément sur une machine qui a 256 Mo de RAM.

X fait tomber sa machine alors que Y s'éxécute sans soucis.

X est il le plus rapide dans ce cas ? (ce qui revient à ton calcul de charge coucou747)

Dans le cadre du WEB notamment, ce type d'exemple est bel et bien concret. Et un minimum, je crois, a prendre en considération au moins dans les benchmark si ça doit faire fois du meilleur langage pour le web, qu'on donne des résultats réels basés sur des applications concrètes.

Je serai de la partie Coucou747 pour te filé un de mes serveurs et qu'on test tout ça ensemble. Franchement ça me tripperais bien de connaitre les performances de chaque langage dans cet exemple et je pense qu'il pourrait même y avoir des surprises. Mais j'ai que deux bi-xeon sous la main et il ne sont pas optimisé pour ce genre de choses.

Mais je pense qu'au de là encore de ceci, chaque chose à son application, son mode de travail etc. On peut préféré maniabilité à performance, joué la carte de l'adaptabilité plutot qu'une autre etc. on peut préféré du php parce qu'on le met tous les jours à jour plutot que de compiler du C en cgi a chaque fois et ainsi de suite.

Chaque langage qui vit aujourd'hui vit parce qu'il a des atouts. A mediter.

Pour relancé d'une meilleur manière le débat, J'ai pas entendu parler de Python ou de Ruby avec Ruby On Rails très bon framework web pour ceux qui adore l'objet à découvrir absolument.
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
lol, pour le web, il faudrait comparer un cgi (réalisé en C) et un php... mais mon bench montrait l'inefficacité du php sur un client et non un serveur (php-gtk ect...)
aKheNathOn
Messages postés
276
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013

mdr malalam ! Effectivement les résultats sont vite trouvés.
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Personne n'a jugé cette source...tout le monde la trouve très bien. Le débat est allé plus loin.
Un bench C contre php, par contre, est totalement stupide, à mon avis. Je ne vois pas quel rôle il joue?
Et il est logique, en plus. La compilation joue sans doute un tout petit rôle dans cette différence...hmm?
Bref, comparer C et PHP...pourquoi ne pas comparer un basic et un asm aussi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.