29
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPのアロー演算子がわかんなかったのでまとめてみた

Posted at

#アロー演算子とは
言ってしまえばこれのことです。

sample.php
$hoge -> hoge;

この矢印なんやねん!って正直思っているあなた、安心してください私もわかりません。(いいのか?)
ということで、かんたんにまとめておきます。

アロー演算子はクラスのメソッドやプロパティ(変数)にアクセスするための演算子です。
どういうことか、ソースを見たほうが早いでしょう。
そこでオブジェクト指向にありがちな人間というオブジェクトを想定します。

sample.php
<?php

class Human{
    protected $name;
    protected $age;

//説明1
    function __construct($name, $age) {
        $this   ->name  = $name;
        $this   ->age   = $age;
    }

//説明2
    function intro(){
        echo 'My name is '.$this->name.'. My age is '.$this->age.' years old.';
    }
}

$tom = new Human('Tom', '17');

//説明3
$tom->intro();

?>

これを実行すると以下が出力されます。

my name is Tom. My age is 17 years old.

なんで英語やねん、とつっこみたいですがそこはスルー。PHPはおしゃれな言語ですからね(偏見)

##説明1
コンストラクタを作っています。見ればわかりますね。
ここで$this->hoge = $hogeが出現します。
これは「ここのhogeは$hogeですよ」といっているわけです。
しかし、$thisってなんやねんという疑問が発生すると思います。これは自分自身だと思ってください。つまりコンストラクタ自身なんです。
コンストラクタ自身のhogeを$hogeとしますという認識で結構だと思います。違ったらご指摘ください。
ここではクラスに$name$ageというプロパティ(変数)がありますね。それにアクセスしているのです。

##説明2
これは説明1を読んでいただければわかると思います。
クラス自身、つまり$thisの中にあるnameというプロパティ(変数)やageというプロパティ(変数)を呼び出しているだけです。

##説明3
もうここまで来るとわかると思います。
$tomというインスタンスが生成されました、そのインスタンスはHumanクラスから作られたものです。なのでHumanクラスから生成された$tomの中にあるintroというメソッドを呼び出しているだけです。

#まとめ
->ってなんやねんと思いましたが、要は左の中にある右のものを取り出しているだけなんですね。私含め、この記事を読んでいる方が少しでも理解していただければ幸いです。

29
33
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?