A quoi ca sert -> en php

Résolu
Bonjour,
a quoi ça sert -> en php ?
par exemple:

var $a;
$b -> a = instruction;

et c'est quoi son altérnatif ?

est ce que je peux la remplacer par ceci:
$a= instruction;
$b=$a;

6 réponses

  1. Cela est utilisée en programmation orientée objet, pour utiliser une propriété ou une méthode d'un objet.
    Ici "a" doit être une variable de l'objet $b, en faisant :
    $b -> a = instruction;
    Tu affecte à la variable "a" de l'objet $b la valeur de "instruction"
    2
    1. merci kyser mais regarde la fonction suivante:

      var $a;
      $b->a = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
      mysql_select_db(DB_NAME, $b->a) or die(mysql_error());

      et maintenant je veux ajouter mysql_query("SET NAMES 'utf8'"); en utiliisant l'objet $b et sa variable a

      comment je dois faire ? sachant que j'appelle $a->b dans des autres fonctions
      0
      1. Modérateur
        Salut,

        Tout d'abord, pourquoi ne pas stocker le résultat de ta requête dans une variable simple en faisant directement:
        $query = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
        mysql_select_db(DB_NAME, $query) or die(mysql_error());

        Secondo, t'es en train de faire ce qu'on appelle un ANTI-PATTERN, c'est à dire une mauvaise pratique, utilises donc l'API PDO pour te connecter à MySQL et faire tes requêtes SQL.
        0
        1. bon j'intègre un script open source orienté objet avec ses classes, et j'ai réussi de le modifier pour répondre a mes besoins, et si je modifie la structure de cette fonction, je serai obligé de modifier toutes les fonctions qui faire appel a $b->a

          alors je veux juste intégrer mysql_query("SET NAMES 'utf8'"); dans cette fonction de connexion a bdd pour resoudre le probléme d'accent dans la base de données
          0
          1. Modérateur
            Tu peux tout me même créer ton propre fichier et l'inclure si besoin est pour faire tes requêtes, ça donnerait quelque chose comme ceci:

             class DB {
            
                      private static $_dsn = "mysql:host=ton_hote;dbname=nom_de_la_base";
                      private static $_username = "ton_username";
                      private static $_password = "ton_password";
                      public $db;
                      
                      public function __construct($dsn = null, $username = null, $password = null) {
                            if ($dsn != null || $username != null) {
                                  self::$_dsn = $dsn;
                                  self::$_username = $username;
                                  self::$_password = $password;
                            }
                            try {
                                  $this->db = new PDO(self::$_dsn, self::$_username, self::$_password);
                                  $this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES UTF8');
                            } catch (PDOExeption $e) {
                                  die('Erreurs lors de la connexion a la base de donnees' . $e->getMessage());
                            }
                      }
            
            


            Tu peux aller plus loin en ajoutant une méthode qui te permettrai de faire les requêtes:

            public function query($stmt, $data = null) {
                           $req = $this->db->prepare($stmt) ;
                           $req->execute($data) ;
                           $req->closeCursor() ;
                            return $req ;
                      }
            

            0
            1. regarde la structure:

              class MABDD
              {

              var $connection;

              function MABDD() {

              $this->connection = mysql_connect(DB_HOST DB_USER,
              DB_PASSWORD) or die(mysql_error());
              mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
              }

              function query($query) {
              $a = mysql_query($query, $this->connection);
              return $a;
              }

              function Close() {
              mysql_close($this->connection);
              }
              }

              $database = new MABDD;

              alor je veux intégrer mysql_query("SET NAMES 'utf8'"); dans cette classe

              mercii mes amis ^^
              0
              1. Modérateur
                Tu peux dans ta fonction query, appliquer utf8_encode aux résultats de la requêtes,
                c'est comme appliquer un "SET NAMES UTF8"

                function query($query) {  
                    $a = mysql_query($query, $this->connection);  
                    return utf8_encode($a);  
                } 
                
                0
              2. j'ai essayé ça, mais aucun effet, en plus il me fait un problème d'upload, j'ai essayé ausii d'intégrer utf8_encode() et utf8_decode() quand j'interoge la bdd, mais ausii sans succès
                0
              3. Modérateur
                Remarque, dans la classe que je t'ai donné on récupére en UTF8, regarde la ligne ou c'est écrit:
                $this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES UTF8');
                0
              4. la classe DB ne permet aucun accès a la bdd, je ne sais pas ou est l'erreur, il me reste que modifier tout les classe qui ont un accès a la base avec une simple requête, merci bionik, c'est vrmt sympaa ;)
                0
              5. Modérateur
                La classe BD te permet de te connecter à la base de données, tu remplaces juste les identifiants par ceux que t'utilises pour te connecter à ta base. Tu instancies ensuite un objet de cette classe pour faire tes requêtes mais à priori ça marche puisque c'est ce que j'utilise pour faire mes requêtes :)
                0