Bon déjà, c'est impossible à 100% d'empêcher une API tierce d'utiliser ses propres méthodes . Par contre, on peut leur obliger de prendre des objets en paramètre, indiquant qu'il serait bien de les utiliser
Pour ça, faut que les API tierces héritent de classes de base que tu aura définit.
Genre pour les objets devant utiliser un BDD_Auth, tu peux en demander un dans le constructeur d'une classe de base, genre :
Code :
abstract class Base { private $auth; public function __construct(BDD_Auth $auth) { $this->auth = $auth; } }
|
Et les API tierces devront obligatoirement hériter de Base et prendre en paramètre un BDD_Auth :
Code :
class Bidule_Tiers extends Base { public function __construct(BDD_Auth $auth) { parent::__construct($auth); } }
|
Après de ton côté, quand t'instancies le machin tiers, tu vérifies qu'il hérite bien de Base :
Code :
$biduleTiers = new Bidule_Tiers($bdd_auth); if(!$biduleTiers instanceof Base) { throw new Exception('Bidule_Tiers doit hériter de Base'); }
|
Avec ça tu sera sûr qu'un BDD_Auth circule bien. Mais toujours le problème d'impossibiliter de forcer une méthode ou une autre