#今回のコード
例
<?php
//クラスの定義
class User{ //class名は1文字目が大文字
// property(プロパティ:クラスが持つ変数のこと)
public $name; //クラス内で使える変数を定義
// constructor(コンストラクター)
public function __construct($name){
$this->name = $name; // nameプロパティ($this->name)に、渡ってきた引数($name)を代入している
}
// method(メソッド:クラスが持つ関数のこと)
public function sayHi(){
return "Hi, " . $this->name . "!"; //上の__construct()で代入されたものが出力される
}
}
//$user1と$user2を、それぞれ太郎と花子という名前でオブジェクトを作る(インスタンス化)
$user1 = new User("太郎");
$user2 = new User("花子");
//インスタンスを実行
echo "$user1->name<br>"; //$user1のnameプロパティに代入されているものを表示
echo $user2->sayHi(); //$user2のインスタンスから、sayHiメソッドを実行し、結果を表示
実行結果
太郎
Hi, 花子!
#クラス定義のポイント
例の上半分
<?php
//クラスの定義
class User{
// property(プロパティ)
public $name; //クラス内で使える変数を定義
// constructor(コンストラクター)
public function __construct($name){
$this->name = $name; // nameプロパティ($this->name)に、渡ってきた引数($name)を代入している
}
// method(メソッド)
public function sayHi(){
return "Hi, $this->name!"; //上の__construct()で代入されたものが出力される
}
}
- クラス名:1文字目は大文字
- プロパティ:クラス内で使える変数
- コンストラクター:プロパティに引数を代入
- メソッド:クラスが持つ関数、まとめた処理
#インスタンス化の例
インスタンス化とはオブジェクトを作ること。今回のコードでは、
例の下から6行目
$user1 = new User("太郎");
ここの部分。
オブジェクトを新しく作る命令である「new」の後に、クラス名「User」、「 ( ) 」内に、引数「"太郎"」とすることで、オブジェクトが作られる。(インスタンス化されている。)
今回であれば、引数が「"太郎"」というオブジェクトを新しく作り、$user1に代入した。ということ。
#インスタンスの実行例①
例の下から2行目
echo $user1->name;
実行結果
太郎
$user1のnameプロパティに代入されているものを表示する。
#インスタンスの実行例②
例の下から1行目
echo $user2->sayHi();
実行結果
Hi, 花子!
$user2のインスタンスから、sayHiメソッドを実行し、結果を表示する。
#応用編:引数を2つ使ってインスタンス化
応用例
<?php
//クラスの定義
class User{ //class名は1文字目が大文字
// property(プロパティ:クラスが持つ変数のこと)
public $id;
public $name; //クラス内で使える変数を定義
// constructor(コンストラクター)
public function __construct($id, $name){
$this->id = $id;
$this->name = $name; // nameプロパティ($this->name)に、渡ってきた引数($name)を代入している
}
// method(メソッド:クラスが持つ関数のこと)
public function sayHi(){
return "Hi, " . $this->name . "! あなたのIDは" . $this->id . "です!"; //上の__construct()で代入されたものが出力される
}
}
//$user1と$user2を、それぞれ太郎と花子という名前でオブジェクトを作る(インスタンス化)
$user1 = new User(1,"太郎");
$user2 = new User(2,"花子");
//インスタンスを実行
echo "IDは、$user1->id<br>";
echo "名前は、$user1->name<br>"; //$user1のnameプロパティに代入されているものを表示
echo $user1->sayHi(); //$user2のインスタンスから、sayHiメソッドを実行し、結果を表示
応用例の実行結果
IDは、1
名前は、太郎
Hi, 太郎! あなたのIDは1です!
もう一歩だけ応用して、名前だけでなく、ID番号も引数に入れてインスタンス化したもの。