PHPにおける”->”と”::”の違い

PHPにおける”->”と”::”の違い

phpのオブジェクト指向でのプロパティ、メソッドへのアクセスが2種類あるようなので違いを認識するために作成。(前半はほとんど引用)

引用元:https://www.bricoleur.co.jp/blog/archives/4239

アロー(->)演算子

インスタンスプロパティとインスタンスメソッドにアクセスする

スコープ定義(::)演算子を使う場合

静的プロパティと静的メソッドにアクセスする

 

例題

<code>class Human (){
  public static $humanNumber;
  private $name;
  private $age;

  public static function hello(){
    return "Hello";
  }

  public function getName(){
    return $name;
  }
  ...
}
</code>

上のようなHumanクラスがあるとします。

<code>$taro = new Human();
$taro->getName();
$hello = Human::hello();
$humanNumber = Human::$humanNumber;
</code>

クラスを参照しなくても->と::を見れば静的かどうか分かるという良い点もある。

ここから調べたこと——-

静的プロパティ静的メソッドについて

インスタンスを生成しなくてもアクセス可能な変数、メソッドのこと

なぜインスタンスを生成しないか

静的メソッドのメリット

・共通のメソッドを定義できる
・シングルトンなる仕組みで便利に使える…らしい

静的プロパティのメリット

・共通のプロパティを定義できる
グローバル変数に近い?・・・という程度の理解

静的メソッド・静的プロパティのデメリット

静的メソッドや変数は、どこかで変数の値を変更されたら他に参照しているところ全てに影響が出る。
結果、静的プロパティの現在値を追うことが難しくなるため、静的メソッド・プロパティを多用すると混乱のもとになる。

総論_もう少し勉強しましょう

 

LEAVE A REPLY

*
*
* (公開されません)