C'est dingue on peut même plus partager du code correctement quand deblan.fr est down.
Chez-moi le lien marche bien pourtant, j'ai uploadé le pastebin au boulot et là je suis chez-moi, pas le même PC, pas la même ip, et j'ai pas de compte pastebin.
Bref je te mets un exemple dans ce post, en gros je souhaiterais faire comme la méthode __construct mais sur un autre nom de méthode.
class Foo {
public function init($a) {}
}
class Bar extends Foo {
public function init($a, $b) {
// Do stuff
parent::init($a);
}
}
En fait mon délire c'était d'avoir une classe Object parente à tous les objets, avec une fonction constructeur par défaut prenant un nombre d'arguments dynamiques, et qui appelle la méthode init avec les arguments donnés. Le but c'est d'unifier le nommage de certaines méthodes particulières de mes classes entre les objets PHP et JS, comme ça j'aurais une méthode init dans mes objets, peu importe qu'on soit en PHP ou JS, et le framework se chargerait de l'appeler soit depuis le constructor JS, soit depuis le __construct PHP.
Sauf que je veux garder la possibilité d'appeler la méthode init parente, et avec des arguments différents. Si tu remplaces "init" par "__construct" dans mon exemple précédent ça marchera très bien, vu que PHP sait explicitement que c'est le constructeur de la classe et en toute logique les arguments sont spécifiques à la classe qui est instanciée.
Par contre PHP reconnaît la méthode init comme une méthode "classique", en gros si je voulais faire ceci en partant de mon code précédent :
function test(Foo $foo) {
$foo->init('a');
}
test(new Bar);
Ça me déclencherait une erreur vu qu'on attend un Foo et que le Bar réécrit init avec d'autres arguments...
Bref je veux faire des trucs pas corrects dans certains cas très particuliers (dans lesquels c'est correct mais pas du point de vue de PHP) et j'aurais bien aimé pouvoir virer juste cette spécificité du E_STRICT (pas tout le E_STRICT si possible), et surtout ans toucher directement au php.ini.
Quoi qu'il en soit ça m'a l'air impossible donc j'ai renoncé à mon utopie d'unifier à la perfection le nommage de mes classes PHP et JS.
Après j'avais aussi l'impression d'avoir besoin de ce genre de fonctionnement pour d'autres méthodes, comme une toString surchargée, mais j'arrive pas à trouver d'exemple concret où ça pose problème.