Forcer l'utilisation des class officielles de connexion

Forcer l'utilisation des class officielles de connexion - PHP - Programmation

Marsh Posté le 28-10-2009 à 20:20:55    

Bonjour tout le monde, voilà je possède un petit problème pour le développement de mon projet.
La plateforme que je développe va s'articuler autour de nombreuses API qui viendrons se greffer sur les class principales (nottament la class de connexion à la BDD). De nombreuses API seront vérifiés par l'équipe de développement mais nous autoriserons aussi l'installation d'API tierces (avec l'avertissement de l'utilisateur).
 
La question est : comment je peu forcer les API tierces à utiliser la class officielle de connexion à la base de donnée (et ainsi de lui donner l'accès au login et au mot de passe de connexion) et éviter ainsi que l'API tierce demande à l'utilisateur son login et son mot de passe pour se connecter elle même à la BDD.
 
En gros il faudrais "forcer" les API à passer par BDD_Auth pour se connecter et interdire les codes de connexion maison
 
Merci de m'éclaircir sur le sujet  [:kabale]


---------------
╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 28-10-2009 à 20:20:55   

Reply

Marsh Posté le 29-10-2009 à 09:43:26    

Bon déjà, c'est impossible à 100% d'empêcher une API tierce d'utiliser ses propres méthodes [:sadnoir]. Par contre, on peut leur obliger de prendre des objets en paramètre, indiquant qu'il serait bien de les utiliser :p  
 
 
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 :
  1. abstract class Base
  2. {
  3.  
  4.  private $auth;
  5.  
  6.  
  7.  public function __construct(BDD_Auth $auth)
  8.  {
  9.    $this->auth = $auth;
  10.  }
  11.  
  12. }


Et les API tierces devront obligatoirement hériter de Base et prendre en paramètre un BDD_Auth :

Code :
  1. class Bidule_Tiers extends Base
  2. {
  3.  
  4.  public function __construct(BDD_Auth $auth)
  5.  {
  6.    parent::__construct($auth);
  7.  }
  8.  
  9. }


 
Après de ton côté, quand t'instancies le machin tiers, tu vérifies qu'il hérite bien de Base :

Code :
  1. $biduleTiers = new Bidule_Tiers($bdd_auth);
  2. if(!$biduleTiers instanceof Base) {
  3.  throw new Exception('Bidule_Tiers doit hériter de Base');
  4. }


 
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 :/

Reply

Marsh Posté le 29-10-2009 à 15:47:38    

Ok merci  :jap:
C'est pourtant dommage qu'on ne puisse pas forcer ce genre de chose [:transparency]


---------------
╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 29-10-2009 à 17:58:14    

Tu peux toujours faire un code qui ouvre le fichier de l'API tierce (Ouvrir, pas inclure) et chercher dedans des occurrences des fonctions classiques MySQL (mysql_connect, pconnect, query, ...).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed