phpでオブジェクト指向の学習をしています
よく初学者向けのブログや書籍でコンストラクタを説明するコードで
php
1<?php 2 3class Staff { 4 5public $name; 6public $age; 7 8public function __construct($name,$age) { 9 $this->name = $name; 10 $this->age = $age; 11} 12} 13 14$tanaka = new Staff("tanaka",59); 15echo $tanaka->name; 16echo $tanaka->age; 17 18?>
こういったのを見るのですが
$nameと$ageが多くていささか混乱しています。
自分なりの解釈では
php
1class Staff { 2 3 public $name; 4 public $age; 5 6 public function __construct(**$name**,$age) { 7 $this->name = **$name**; 8 $this->age = $age; 9 }
アスタリスクで囲われた&meiペアが同じもので
$this->nameと
public $name;
のペアが同じものなのかと思い
下記のようなコードに変えてみたらエラーなく出力ができました。
*$ageは割愛
php
1 2<?php 3class Staff { 4 5 6 public $name; //とりあえずクラス内に変数を作っただけ 7 public $age; 8 9 public function __construct($mei,$toshi) { 10 $this->name = $mei; //新しくインスタンス作ったときに(引数)の中の値を変数$meiに格納してインスタンス田中の変数nameに代入 11 $this->age = $toshi; 12 } 13} 14 15$tanaka = new Staff("tanaka",59); //設計図スタッフから田中っていう変数2つ持ったインスタンス生成(引数で$meiと$toshiに渡す) 16 17echo $tanaka->name; //田中の変数name呼び出し 18echo $tanaka->age; //田中の変数age呼び出し 19//tanaka59が表示 20?>
この自分の解釈は間違っているでしょうか?
またもし合っていたとして
初学者向けの参考所でこのような混乱をきたすような書き方をされる理由など
なにかあると思うのですが
単に作法的なものなのか
クラスのプロパティ名とコンストラクタの引数名が
同じじゃないといけないみたいな理由があるのでしょうか?
またコメントアウトで自分用のメモとして解釈を書き加えたのですが
このメモの解釈で合っていますでしょうか?
よろしければ回答ください
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/26 23:13
2019/03/26 23:59