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. 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
    2. 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. 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
          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. 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