Aussi moche soit-il, PHP s'est imposé chez bon nombre d'hébergeurs, et souvent, "il faut faire avec".

L'astuce du jour : comment définir une classe héritant dynamiquement d'une autre classe ?

Forcément, le code suivant ne fonctionne pas :

<?php
	$classToInherit = "parentClass";

	class parentClass {
		public function hello() {
			echo "Hello, world !";
		}
	}

	class childClass extends $classToInherit {
		public function hello() {
			parent::hello();
			echo "Hello, too!";
		}
	}

	$o = new childClass();
	$o->hello();
?>

Ce serait trop simple...

Qu'à cela ne tienne, il existe une fonction qui va nous permettre de ruser, la fonction class_alias. Et voilà le travail :

<?php
	$classToInherit = "parentClass";

	class parentClass {
		public function hello() {
			echo "Hello, world !";
		}
	}

	class_alias($classToInherit,"myCustomClass");
	
	class childClass extends myCustomClass {
		public function hello() {
			parent::hello();
			echo "Hello, too!";
		}
	}

	$o = new childClass();
	$o->hello();
?>

(J'entends déjà les "dans les vrais langages, on peut faire ça proprement", et je suis entièrement d'accord :)