PHPの勉強をしていて度々見かける「->」が気になったことはありませんか。この記号は代入演算子の「=」などと同じ演算子で、アロー演算子と呼ばれるものです。
このアロー演算子がどういったものなのか、またこの演算子の使い方がよくわかっていないという人は多いのではないでしょうか。今回はPHPでよく使われるアロー演算子についてわかりやすく解説します。
目次
PHPのアロー演算子はクラス・オブジェクトに関係した関数
PHPのアロー演算子は「アロー演算子はクラス・オブジェクトに関係した関数」です。
いきなりクラスやオブジェクトと言われてもわかりにくいので、アロー演算子を紹介する前にまずはクラスとオブジェクトについてお話します。
クラスとオブジェクトは設計図と実物の関係
漠然とクラス・オブジェクトと言われても、勉強していないとどういったものなのかわかりません。
クラスは物を作るために必要な図面、つまり設計図と捉えるとわかりやすいです。オブジェクトはその設計図を使って生み出された実物だと考えるとわかりやすいですね。
ちなみにクラスとオプジェクトで分けてあるのは、クラス(設計図)を残して使い回せるようにするためです。
オブジェクト(実物)と一緒にしてしまうと使い切りになってしまい、同じ設計図がほしい時に逐一作らないといけないため、分けているのです。
では、ここからは構文を使ってクラスとオブジェクトについてそれぞれご説明いたします。
クラス
先程も説明しましたがクラスは設計図で、この設計図を使ってオブジェクト(実物)が生み出されます。クラスの構文は基本以下のように書かれていることが多いです。
1 2 3 4 5 6 7 8 9 |
class クラス名 { // 変数の宣言と初期値化 アクセス指定子 $変数名 = 値; // 関数 アクセス指定子 function 関数名(引数){ // 関数の処理 } } |
では上記の構文に沿って「色の設定」と「大きさの設定」ができるロボットの設計図を書いていきます。
1 2 3 4 5 6 7 8 9 10 11 |
class Robot { // 色の設定ができる変数colorを宣言、初期値は"未塗装" public $color="未塗装"; // 大きさの設定ができる変数scaleを宣言、初期値は0 public $scale=0; // Robotを組み立てる関数assemble public function assemble(){ print "{$this->color}のロボットで、全長{$this->scale}mです。" } } |
これでロボットの設計図となるRobotクラスのできあがりです。これは設計図なので実物となるロボットはまだ作られていません。
クラス内関数の処理部分を見てみるとここで早速アロー演算子が使われています。
$this->colorと$this->scaleでそれぞれクラス内で定義されているcolorとscaleを呼び出しています。このようにアロー演算子はクラス内で定義されている変数を呼び出すことができるのです。
ちなみに「$this」は書かれている場所内を参照する時に使うもので、この場合はRobotクラス内を参照することです。
オブジェクト
では前項で作ったRobotクラス(設計図)を使ってオブジェクト(実物)を作っていきます。オブジェクトの構文はシンプルで、以下のように記述します。
1 |
$オブジェクト名 = new クラス名(); |
設計図となるクラスがあれば作る工程は簡単で、newと書いた後ろにどのクラス(設計図)を使えばいいか指定するだけ。
先程のRobotクラスでオブジェクトを作る場合、以下のように記述します。
1 |
$myRobot = new Robot(); |
これで指定したクラス(設計図)通りのオブジェクト(実物)が呼び出されます。全体的にわかりやすくするため、クラスと一体化させたソースコードを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?PHP // ロボットの設計図クラスRobot class Robot { // 色の設定ができる変数colorを宣言、初期値は"未塗装" public $color="未塗装"; // 大きさの設定ができる変数scaleを宣言、初期値は0 public $scale=0; // Robotを組み立てる関数assemble public function assemble(){ print "{$this->color}のロボットで、全長{$this->scale}mです。" } } // Robotの実物 $myRobot = new Robot(); ?> |
アロー演算子を使ってオブジェクトを利用する
作ったオブジェクトにアロー演算子を使えば、クラス内の関数や変数を利用することができます。つまり作られてただ存在しているだけのロボットに対して、組み立て実行や色・大きさの設定まですることができるのです。
ではオブジェクトにアロー演算子を使って関数・変数を利用する方法を見ていきましょう。
アロー演算子でオブジェクトの関数を利用する
Robotクラスを作った際に組み立てる関数としてassemble()という、「組み立てる」機能を用意しました。アロー演算子を使えばこのassemble()関数を利用できます。
以下のように記述してRobotクラス内のassemble()関数を呼び出します。
1 |
$myRobot->assemble(); |
newでRobotの実物を定義してから呼び出すことで組み立てることができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?PHP // ロボットの設計図Robotクラス class Robot { // 色の設定ができる変数colorを宣言、初期値は"未塗装" public $color="未塗装"; // 大きさの設定ができる変数scaleを宣言、初期値は0 public $scale=0; // Robotを組み立てる関数assemble public function assemble(){ print "{$this->color}のロボットで、全長{$this->scale}mです。" } } // Robotの実物 $myRobot = new Robot(); // Robot内assemble()関数を実行 $myRobot->assemble(); ?> |
このプログラムを実行すると以下の文章が表示されます。
とりあえず未塗装かつ全長0mのロボットができあがりました。
アロー演算子でオブジェクトの変数を利用する
ロボットを作っても色がなく全長も0mでは、実物が無いようなもの。今度はアロー演算子でRobotクラス内の変数を呼び出して、色と全長を設定していきます。
それでは青色で全長30mのロボットを以下のプログラムで設定していきましょう。
1 2 3 4 |
// Robotクラス内color変数に青色を代入 $myRobot->color = "青色"; // Robotクラス内scale変数に30を代入 $myRobot->scale = 30; |
プログラム全体に組み込むと以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?PHP // ロボットの設計図クラスRobot class Robot { // 色の設定ができる変数colorを宣言、初期値は"未塗装" public $color="未塗装"; // 大きさの設定ができる変数scaleを宣言、初期値は0 public $scale=0; // Robotを組み立てる関数assemble public function assemble(){ print "{$this->color}のロボットで、全長{$this->scale}mです。" } } // Robotの実物 $myRobot = new Robot(); // Robotクラス内color変数に青色を代入 $myRobot->color = "青色"; // Robotクラス内scale変数に30を代入 $myRobot->scale = 30; // Robot内assemble()関数を実行 $myRobot->assemble(); ?> |
上記を実行すると以下のように表示されます。
アロー演算子を使ってRobotクラス内からcolorとscaleの変数を呼び出し、初期の未塗装・0をそれぞれ青色と30に上書きしています。全長が30mの青色のロボットができあがりました。
アロー演算子は演算子と認識されないとエラーになる
アロー演算子をを多用しているとエラーが出てしまうことがあります。
よくあるエラーはアロー演算子の「>」部分がhtmlの終了タグと間違われることです。
PHP自体html内で使わることが多く、htmlの方でタグがしっかり書かれていないと、勝手にアロー演算子の「>」部分が終了タグとして認識されることがあります。
記載したPHPでエラーが出ているのに確認して何も問題がなければ、html側でタグがきちんと記載されているか確認してみてください。タグが消えてアロー演算子が終了タグ扱いになっている可能性があります。
まとめ
今回はPHPのアロー演算子について、初心者にもわかりやすく解説しました。アロー演算子がどういったものでどのように使うかが分かったはずです。
アロー演算子がわからずつまづいていた人も、解説と照らし合わせていけば理解できるはず。専門用語も多くアロー演算子を理解するのは難しく思えますが、わかれば意外と簡単なものなんだと感じられるでしょう。