objet(PDO)#2

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

objet(PDO)#2

Par dancom5  -  5 reponses  -  Le 16/10/2015 22:59  -  Editer  - 

Que veut dire objet(PDO)#2

après avoir fait ceci:

  $oSingletonA = dbConn::getConnection();
  $oSingletonB = dbConn::getConnection();
  $oSingletonC = dbConn::getConnection();

  echo '<pre>';
  var_dump($oSingletonA);
  echo '</pre>';

  echo '<pre>';
  var_dump($oSingletonB);
  echo '</pre>';

  echo '<pre>';
  var_dump($oSingletonC);
  echo '</pre>';
 

Réponses apportées à cette discussion

Par Cyrano  -  Le 17/10/2015 00:05  -  Haut de page  - 

Salut,
une lecture de l'introduction de la documentation t'aurait permis d'avoir la réponse dès la première ligne : PHP Data Object.

Peut-être serait-il souhaitable que tu précises ta question parce que je devine des interrogations bien plus complexes en arrière-plan.

 
Par dancom5  -  Le 17/10/2015 01:21  -  Haut de page  - 

Bonjour Cyrano.

J'ai fais une relecture de votre tutoriel sur le singleton et je me suis arrêté sur la partie qui parle de :

"Le #1 correspond à la référence de l'instance. On constate ici que pour les deux objets $oSingletonA et $oSingletonB, cette référence est strictement identique. On en déduit donc que ces deux variables référencent (pointent) le même objet en mémoire. Nous avons donc réussi à créer une instance unique de la classe, le fameux Singleton."

Bien moi, j'obtiens ceci:

objet(PDO)#2

J'ai passé la soirée à trouver sur php.net et aussi dans google et je n'ai rien trouvé.

Pour l'utilisation du singleton, on est obligé à faire une "class" ou bien on peut l'utiliser en procédural?

En procédural, la suite de mon code est cec:

      $query = "SELECT id, contenu FROM indexp WHERE id = ? LIMIT 0,1";
  $stmt = $con->prepare( $query );
  $stmt->bindParam(1, $id);
  $stmt->execute();
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
  $contenu = $row['contenu'];

Je pensais peut être faire quelque chose qui n'a que 2 ou 3 lignes de code plutôt que de tout écrire ça.

 
Par Cyrano  -  Le 17/10/2015 02:10  -  Haut de page  - 

Mouais, il y a des mélanges à corriger dans tout ça.

À la question de savoir si on peut appliquer le singleton en procédural, la réponse est clairement non. Non parce que le singleton est ce qu'on appelle un « design pattern », ce qui implique que ça ne peut s'appliquer que dans le cadre d'une programmation orientée objet.

Par ailleurs, l'utilisation d'un design pattern doit répondre à une idée de simplification de la programmation sur un plan global dans une application.

Donc si je résume, la question n'a pas vraiment de sens si ces éléments ne sont pas convenablement compris et assimilés. Pourquoi utilise-t-on un singleton ? Pour être sur de n'avoir qu'une seule instance d'une classe donnée, pour éviter certains problèmes qui pourraient être induits par deux instances parallèles, deux ou davantage bien entendu.

Pour ce qui est de réduire le nombre de lignes de code pour l'exemple présenté, la seule solution consisterait à créer une classe qui exécute l'ensemble de ces lignes dynamiquement et à laquelle on se limiterait à passer en paramètre une requête et les paramètres propres à la requête. Et du coup, cette classe serait utilisable partout dans l'application où elle est intégrée.

 
Par dancom5  -  Le 17/10/2015 02:27  -  Haut de page  - 

et le objet(PDO)#2, le 2 veut dire quoi?

pour le singleton, j'arrive à faire ceci et tout afficher:

$db = new PDO('mysql:host=localhost;dbname=bdd', 'bdd', 'bdd');

$result = $db->query('SELECT * FROM mpages');
$countries = $result->fetchAll();
var_dump( $countries );

Je trouve intéressant :

"Pour ce qui est de réduire le nombre de lignes de code pour l'exemple présenté, la seule solution consisterait à créer une classe qui exécute l'ensemble de ces lignes dynamiquement et à laquelle on se limiterait à passer en paramètre une requête et les paramètres propres à la requête. Et du coup, cette classe serait utilisable partout dans l'application où elle est intégrée."

Il me reste à trouver un tuto sur cela.

 
Par Cyrano  -  Le 17/10/2015 02:35  -  Haut de page  - 

La signification de « __objet(PDO)#2 » m'échappe, et pour être honnête, je trouve que c'est d'un intérêt des plus réduits.

Quant à la construction d'une classe, c'est une question de logique : ça consiste à construire un objet qui comporte les méthodes qui vont exécuter un certain nombre d'instructions, avec ou sans paramètre selon la nécessité. Donc il faut se poser la question suivante : que doit faire cet objet ? Quelles méthodes doit-il présenter dont j'ai besoin ?

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !