Besoin
Lorsque l'on souhaite personnaliser
WikiNi, on est souvent obligé de modifier le coeur de celui-ci : le fichier /wakka.php.
Cette pratique comporte de nombreux inconvénients :
- un développeur qui personnalise WikiNi créé une version incompatible avec WikiNi ; il est obligé de mettre à jour manuellement son coeur s'il veut profiter des nouvelles fonctionnalités
- il n'est pas possible à un non développeur d'intégrer des fonctionnalités "non officielles" (cf. ContributionWikiNi) sans mettre les mains dans le camboui
- il n'est pas possible de supprimer simplement certaines fonctions du coeur inutiles pour certains utilisateurs (Gestion des ACLs, commentaires, referrers, débug, etc.)
Cette état de fait ne favorise pas les contributions et gêne les développeurs.
Cette architecture ne comprend qu'un seul avantage, celui de faire appel à un seul fichier.
Sans compter que certaines fonctions du coeur sont apellées une fois sur 100, lorsque qu'une action fait appel à elle : par exemple :
- LoadAllPages? qui coûte 140 octets
- FullTextSearch? qui coûte 200 octets
- LoadWantedPages? qui coûte 467 octets
- LoadOrphanedPages? qui coûte 400 octets
Certaines de ces fonctions ne pourraient-elles être appelées à la demande ?
Solutions
Cas d'une fonction de /wakka.php qui n'est utilisée que par une (deux ?) action(s)
Déport de la fonction dans l'action :
<?php
if (!function_exists("NouvelleFonction"))
{
function NouvelleFonction($param1,$param2 ...) {
// insert code here
}
}
NouvelleFonction("1","2" ...);
?>
(Piste à étudier, non testée : utilisation de l'heritage pour une surcharge d'une fonction de wakka.php devant être modifié ponctuellement, pour une contribution par exemple).