Définition :
Pour ma part l'événement est un ou plusieurs point(s) d'entrée(s) (fonction(s) par exemple) déclenché / appelé à partir d'une interaction (changements d'états).
Cas pratique :
Du coup l'approche sous PHP devient différente. Au lieu d'avoir par exemple :
<?php
If (isset($_POST['submit'])) {
// TRAITEMENTS
}
?><form method="post"><input type="submit" name="submit" /></form>
On pourrait avoir :
<?php
class myForm extends ... {
function onSubmit() {
// TRAITEMENTS
}
}
?><form method="post"><input type="submit" name="submit" /></form>
Vous vous dites que l'approche est sympa mais qu'au fond les deux méthodes se valent. Eh bien non, la différence entre la première et la seconde méthode (autre que la forme) c'est que le traitement et l'interception sont séparées (le principe de base l'informatique ... pour mieux régner ...). On part du même principe pour en démontrer l'intérêt :
<?php
include('machin.php');
If (isset($_POST['submit'])) {
// TRAITEMENTS
}
?><form method="post"><input type="submit" name="submit" /></form>
Et machin.php contiendra ceci :
<?php
If (isset($_POST['submit'])) {
// AUTRES TRAITEMENTS
}
?>
Et on fait des tonnes de fichiers (similaires à cet exemple) basés sur le traitement d'un ensemble de formulaires complexes pour des règles métier complexes. Vous n'y pouvez rien, c'est ce qu'on appelle du code spaghetti.
Du coup en POO événementielle on aurait ceci :
<?php
include('machin.class.php');
class myForm extends machin {
function onSubmit() {
// TRAITEMENTS
}
}
?> <form method="post"><input type="submit" name="submit" /></form>
Et le fichier machin.class.php pourrait contenir ceci :
<?php
class machin extends ... {
function onFormSubmit() {
// AUTRES TRAITEMENTS
}
}
?>
L'avantage consiste évidement d'une part à ne pas se soucier de l'interception, et de laisser les objets spécialisés s'en charger, et d'une autre part, imaginez-vous changer le nom d'un tel bouton dans votre script.
Autre chose, vous remarquerez que j'ai surchargé la classe myForm et que je n'ai pas utilisé la surcharge de fonction. Tout ceci est volontaire, je vous l'explique par la suite.
Outro partie 1 :
Les exemples de ce tuto sont purement illustratifs, et ne comportent pas l'ensemble du code ou bien ne rentrent pas dans une proposition de système concréte.
Dans le prochain tuto je vous propose de découvrir l'architecture objet liée à un système événementiel et voir concrètement son utilisation par du code.