Notation PHP double flèche pour les instances d'une classe(es)

je vous serais reconnaissant si quelqu'un m'expliquait l'utilisation de la notation double flèche en PHP. Je suggère, c'est un double classes et instanciation de la classe, mais je ne suis pas sûr. Quelques exemples seront bonnes. Grâce.

quelque Chose comme ceci:

$obj->prop->methd();
8
demandé sur Dexy_Wolf 2011-07-24 16:42:20

5 réponses

cela indique simplement que $obj a une propriété qui est une classe d'une certaine sorte, plutôt qu'une variable atomique. La classe interne a une méthode method() qui est appelé à partir de l'opérateur de la deuxième flèche. Vous pouvez également accéder aux propriétés de la classe intérieure via la deuxième flèche.

// Access the inner property
echo $obj->prop->inner_property
// 1234

// Call the inner method
$obj->prop->method();
// I'm the method!

Les définitions de classe pourrait être quelque chose comme:

class obj
{
   // Will hold an instance of class Something
   public $prop;

   public function __construct() {
      $this->prop = new Something();
   }
}

class Something 
{
   public $inner_property = 1234;

   public function method() {
     echo "I'm the method!";
   }
}
12
répondu Michael Berkowski 2011-07-24 12:49:45

a titre d'exemple, prenez par exemple deux classes:

<?php

class a {
    function test() {
        echo "test";
    }
}

class b {
    var $prop = null;
    function __construct() {
        $this->prop = new a();
    }
}

$obj = new b();
var_dump($obj);
$obj->prop->test();

?>

http://codepad.org/aEeRs45A

Classe a donne $prop une méthode lors de l' b est instancié et le constructeur est appelé. $propb est un objet de la classe b.

4
répondu Jared Farrish 2011-07-24 12:50:24

tant Que votre méthode renvoie un objet que vous pouvez appeler les méthodes de cet objet, et ainsi de suite.

Donc voici un exemple de comment vous pouvez enchaîner les méthodes d'une classe.

<?php
class MyTest {
    public function Hello() {
        echo "Hello ";
        return $this;
    }

    public function World() {
        echo "World!";
    }
}

$h = new MyTest();
$h->Hello()->World();
?>
2
répondu daniels 2011-07-24 12:50:17

prop est un $obj qui est également un objet. Par conséquent, pour accéder prop ' s méthode, vous devez utiliser l'opérateur de flèche à nouveau.

1
répondu moteutsch 2011-07-24 12:44:23

$obj->prop est une variable définie comme

class class1{
    public $prop = new class2;
}

class2{
    function methd(){
        echo "methd function called";
    }
}


$obj->prop->methd();
1
répondu genesis 2011-07-24 12:46:18