Edited at

[PHP]クラス定義 / インスタンス化 / インスタンス実行の例


今回のコード



<?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番号も引数に入れてインスタンス化したもの。

参考サイト① / 参考サイト②