"->" は 「オブジェクト演算子 (Object Operator)」 と呼ばれます。
- 主にオブジェクトのプロパティやメソッドにアクセスするために使用される演算子です。
"=>" は 「ダブルアロー演算子 (Double Arrow Operator)」 と呼ばれます。
- 配列のキーと値のペアを定義する際に使用される演算子です。
オブジェクト演算子 (Object Operator)
->
(オブジェクトのプロパティやメソッドにアクセスするための演算子)
->はオブジェクトに関連するプロパティやメソッドにアクセスするときに使います。
オブジェクト指向プログラミングにおいて、クラスのインスタンス(オブジェクト)に
アクセスするための演算子です。
使用例:
phpclass Sample {
public $property = "Hello, World!";
public function sayHello() {
return "Hello from method!";
}
}
$instance = new Sample();
// プロパティにアクセス
echo $instance->property; // 出力: Hello, World!
// メソッドにアクセス
echo $instance->sayHello(); // 出力: Hello from method!
ダブルアロー演算子 (Double Arrow Operator)
=>
(配列のキーと値のペアを定義するための演算子)
=>は連想配列(または配列のキーと値のペア)を定義する際に使います。
左側がキー、右側が値を表します。
使用例:
php$array = [
"key1" => "value1",
"key2" => "value2",
"key3" => "value3"
];
// キーを指定して値にアクセス
echo $array["key1"]; // 出力: value1
foreachとの組み合わせ:
phpforeach ($array as $key => $value) {
echo "Key: $key, Value: $value\n";
}
比較
| 演算子 | 用途 | 例 |
|---|---|---|
-> | オブジェクトのプロパティやメソッドにアクセス | $object->method() or $object->property |
=> | 配列のキーと値のペアを定義 | ["key" => "value"] |
注意点
->はオブジェクトでのみ使用可能です。 配列に使用するとエラーになります。$array = ["key" => "value"];echo $array->key; // エラー: オブジェクトではないため=>は配列に使用します。 オブジェクトの定義では使用しません。
*PHPでは、無名関数を定義する場合にも”=>”を使用します。
オブジェクト演算子はLaravelなどでは、普通にメソッドチェーンとして使われているので、
以下に説明します。
メソッドチェーンの例
php<?php
class StringManipulator {
private $string;
// コンストラクタで初期値をセット
public function __construct($string) {
$this->string = $string;
}
// 文字列を大文字に変換
public function toUpperCase() {
$this->string = strtoupper($this->string);
return $this; // 自分自身を返す
}
// 文字列の先頭と末尾の空白を削除
public function trimSpaces() {
$this->string = trim($this->string);
return $this; // 自分自身を返す
}
// 文字列に接尾辞を追加
public function append($suffix) {
$this->string .= $suffix;
return $this; // 自分自身を返す
}
// 結果を取得
public function getResult() {
return $this->string;
}
}
// インスタンスを作成し、メソッドチェーンで操作
$result = (new StringManipulator(" hello world "))
->trimSpaces() // 空白を削除
->toUpperCase() // 大文字に変換
->append("!!!") // 接尾辞を追加
->getResult(); // 結果を取得
echo $result; // 出力: HELLO WORLD!!!
?>
解説
$thisの利用: 各メソッドで$thisを返すことで、次のメソッドを
チェーンして呼び出せます。
メソッドチェーンの記述があれば、クラスのメソッドの帰り値は、
$thisとなっています。return $this;private $string;に値が保持されて、次の処理が行えます。
$thisはインスタンスなので->(オブジェクト演算子)で
クラス内のメソッドを呼び出せます。
つまり、クラスに引数を伴い、インスタンス化したら、その引数に紐づけして、
次々に引数を元にしたメソッドのチェーンが行えます。
上のコードで言えば、StringManipulatorクラス内の各メソッドを使い、引数の文字を目的の形に加工します。
その際の処理を明示して時系列に->で繋ぐ事で、コードの可読性を上げています。
また、インスタンス作成時の()括りは、処理の順番を明示しています。
つまり、
”インスタンスを作成し、そのインスタンスを使って、チェーンします。”
と明示的に記述しています。メソッドチェーンを使わなければ、必要はありません。
PHPでメソッドチェーンを利用する場合の定番の記述方法となります。- メソッドチェーンの利点:
- コードを一行で記述できるため、簡潔で可読性が高くなります。
- オブジェクトを操作する際の流れを自然に記述できます。
- 出力の流れ:
trimSpacesで空白を削除。toUpperCaseで大文字に変換。appendで"!!!"を追加。- 最終的に
getResultで処理結果を取得。
このようなメソッドチェーンは、Fluent Interface(流れるようなインターフェース)
として知られており、ORMやテンプレートエンジンなどでもよく使われています。


