【アロー演算子/ダブルアロー演算子】PHPの矢印の意味【現役エンジニアが解説】

PROGRAM

今回は、PHPの矢印の意味について、アロー演算子とダブルアロー演算子の場合に分け、簡単に解説していきます。

アロー演算子

アロー演算子はインスタンス化したクラスのプロパティやメソッドを呼び出す際に使います。

アロー演算子の左側にはインスタンス化したクラスの変数名、右側にはそのクラスのプロパティ名やメソッド名を書くことが基本的な書き方です。

class User {
    public $name;

    function __construct($name) {
        $this->name = $name; // コンストラクタの引数をプロパティである$nameに代入
    }
    function __destruct() {
        
    }
    public function Hello() {
        echo "こんにちは、".$this->name."さん";
    }
}

$User = new User("山田");
echo $User->$name; // "山田"と出力
$User->Hello(); // "こんにちは、山田さん"と出力

上記のコードでは、Userクラスをインスタンス化した後、Userクラスのプロパティである$nameやメソッドであるHello()を呼び出していることはもちろんですが、クラスの内部でプロパティにアクセスする場合にはアロー演算子の右側の$は外しています。

ダブルアロー演算子

ダブルアロー演算子は配列や連想配列で要素を定義する際に使います。

ダブルアロー演算子の左側には添字やキー、右側には値を書くことが基本的な書き方です。

// 配列
$names = array(0=>"山田", 1=>"田中", 2=>"髙橋");

// 連想配列
$person = array("name"=>"山田", "age"=>22, "gender"=>"男性");

上記のコードでは、配列である$namesに名前の情報を、連想配列である$personにname、age、genderの情報を定義しています。

アロー演算子やダブルアロー演算子の使用は任意

アロー演算子やダブルアロー演算子は使わずに済む場合があります。

class User {
    public static $name;

    public static function Hello() {
        echo "こんにちは、".self::$name."さん";
    }
}

User::$name = "山田"; // Userクラスのプロパティである$nameに"山田"と代入
User::Hello(); // UserクラスのメソッドであるHello()を呼び出し、"こんにちは、山田さん"と出力

例えば、上記のコードのように、クラスの静的なプロパティやメソッドでは、”クラス名::プロパティ名やメソッド名”で呼び出しが可能です。

// 配列
$names = array();
$names[0]="山田";
$names[1]="田中";
$names[2]="髙橋";

// 連想配列
$person = array();
$person['name']="山田";
$person['age']=22;
$person['gender']="男性";

また、配列や連想配列に関しても、上記のコードのように、代入式を要素ごとに一つひとつ書くことによっても、定義をしていくことが可能です。