web制作のしおり

日々の学習をアウトプットします。

79.クラスを定義してみよう ~わからない時は、すぐ手を動かしてみる~

昨日に引き続きクラスについて学習していきます。

 

クラスって何という方はこちら

manablo.hatenablog.jp

 

では、早速やっていきましょう。

 

PHPでクラスを定義する

まずはコードから

<?php 
     class TestClass {

       public $name;

    
       public function __construct($name){
           $this->name = $name;
       }
    }

 ?>

 

1行ずつ、確認していきましょう。

まずは

class TestClass { }

これは「クラスを定義しますよ」というキーワードですね。

この中に先日学習した、プロパティやメソッドを記述していくわけです。

また、TestClassの部分は任意に決められるクラス名です。

また、クラス名は最初を大文字で記述するというルールがあります。

今回は「TestClassを定義しますよ」という記述でした。

 

次に

public $name;

これは、「TestClassのプロパティには$name変数がある。」という意味です。

ちょっとわかりにくいですね。

クラスとインスタンスの関係で見ると、

TestClassの「プロパティ」は$name変数があって、「インスタンス」を作る時に$name変数に「データ」を入れて使うよ。

こんなイメージです。

publicについてもモヤッとするポイントですが、これは明日以降の学習に譲ります。

 

public function __construct($name){ }

これはインスタンス」を作ると同時に実行される処理です。

この処理の名前をコンストラクと言います。

また、わかりにくいですね。

クラスには、インスタンス作成時の初期設定に関する処理を書けるよ。

くらいのイメージで良いと思います。

インスタンス作成については明日以降の記事でまたやりたいと思います。

 

最後に

$this->name = $name;

これは割りと意味不明です。

ただ、JavaScriptでも出てきたthisキーワードとほぼ同じような意味なのかなと思います。

 

$thisクラスから作成されたインスタンス自身を指します。

インスタンスのプロパティ(データ)にアクセスしたいときには

$this->プロパティ名

とすればアクセスできます。

なのでここでは、「クラスから作成されたインスタンスのnameプロパティを取得」しているわけですね。

そして、コンストラクタの引数として指定していた$name変数の値をインスタンスのプロパティの$name代入しています。

 

ややこしい笑

 

まとめると?

クラスを定義するには、

classキーワードの括弧の中に

プロパティ、メソッドを記述する。

これだけのことなんですが、最初のコードの記述だけ見てもさっぱりでしたね。

おさらいに最初に見たコードを一般化しておきましょう。

     class クラス名{

       public $プロパティ名;

    
       public function __construct($引数名){
           $this->プロパティ名 = $引数名;
       }
    }

 

今日のまとめ

  • クラスはclassキーワードを使って定義する
  • プロパティとメソッドを中に記述する
  • インスタンス作成時に実行されるメソッドをコンストラクタと呼ぶ

明日も引き続きクラスについて学習しようと思います。

ここは力をいれて取り組むポイントだと直感が言っています笑

 

では、また。