14
11

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]クラス定義 / インスタンス化 / インスタンス実行の例

Last updated at Posted at 2019-01-06

#今回のコード

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

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

14
11
0

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
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?