【PHP】->と::

->をアロー演算子と呼びます。
::をスコープ定義演算子と呼びます。

アロー演算子はインスタンスのプロパティやメソッドにアクセスする時に用いられる演算子です。

アロー演算子はインスタンスのプロパティやメソッドにアクセスする時に用いられる演算子です。


<?php
// クラスを作成
class Phone {
    public function call() {
        echo '電話をかけます';
    }
}
 
// インスタンスを作成(インスタンス化)
$iphone = new Phone();
 
// アロー演算子でインスタンスメソッドへアクセス
$iphone->call();


このようにアロー演算子を使って、$iphoneに代入したインスタンスのcallメソッドを呼び出します。
ここで、アロー演算子の使い方の注意です。

アロー演算子はインスタンスのプロパティとメソッドを呼び出すために使います。
つまり、インスタンス化していなければ、アロー演算子ではプロパティとメソッドにアクセスできません。

じゃあ、インスタンス化していないプロパティとメソッドにどうやってアクセスするか? こういう時にスコープ定義演算子::を使います 。





--------------------------------


このようにアロー演算子を使って、$iphoneに代入したインスタンスのcallメソッドを呼び出します。
ここで、アロー演算子の使い方の注意です。

アロー演算子はインスタンスのプロパティとメソッドを呼び出すために使います。
つまり、インスタンス化していなければ、アロー演算子ではプロパティとメソッドにアクセスできません。

じゃあ、インスタンス化していないプロパティとメソッドにどうやってアクセスするか? こういう時にスコープ定義演算子::を使います 。

クラス名::呼び出したいクラスのプロパティまたはメソッド名

クラスのプロパティ、メソッドであることを指定するためにアクセス修飾子staticをつけましょう。こうすることで静的なプロパティとメソッドに指定できますね。




class Test {
 
    // No.1 静的プロパティ
    public static $num1 = 7;
 
    // No.2 静的メソッド
    public static function sum($num2,$num3) {
        echo $num2 + $num3;
    }
}
 
// No.1 静的プロパティへアクセス
echo Test::$num1;
 
// No.2 静的メソッドへアクセス
Test::sum(6,2);

クラスのプロパティ、メソッドであることを指定するためにアクセス修飾子staticをつけましょう。こうすることで静的なプロパティとメソッドに指定できますね。


使い分け方の表を乗せておきます。

インスタンスプロパティ    インスタンスメソッド    静的プロパティ    静的メソッド
外部から    $v->name    $v->name()    クラス名::$name    クラス名::name()
インスタンスメソッド内から    $this->name    $this->name()    self::$name    self::$name()
静的メソッド内から    ×    ×    self::$name    self::$name()