This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

クラス(自分用メモ)

Last updated at Posted at 2023-12-18

参考

クラスとは

  • プログラムの処理をまとめたオブジェクトのことで、あらゆるプログラミング言語でクラスは使用される
  • クラスの中では主に、プロパティ(変数や定数)やメソッド(関数)の定義を記述する
  • クラスを定義には、classキーワードを指定し、その次にクラス名を指定

書き方

class クラス名
{
  //プロパティの宣言
  public $変数名 = ;
 
  //メソッドの宣言
  public function メソッド名(){
    メソッド内処理...
  }
}

クラスオブジェクトの生成(インスタンス化)

  • PHPなどのオブジェクト指向のプログラミング言語では、クラスを使用するために、クラスのオブジェクトを生成する必要がある。
  • インスタンス化して、はじめてClassの処理を実行することができます。
$クラスオブジェクト = new クラス名();

基本的な使い方

サンプル

<?php

class SampleClass
{
  //プロパティの宣言
  public $var = 'This is Sample Class.';

}

//インスタンスの生成
$sample = new SampleClass();

echo $sample->var;

?>

実行結果

This is Sample Class.
  • クラスSampleClassを作成
  • その中でプロパティを宣言して値を代入。
  • 実際にクラスを使用するには、クラスのオブジェクトを生成する必要があるため、「$sample = new SampleClass()」でインスタンスを生成しています。
  • クラス内のプロパティを参照するには、作成したオブジェクト変数に矢印演算子(->)でクラスのプロパティを指定します。
  • $samoleの中の「var」を呼び出す、みたいなイメージ

サンプル02

// ①DogのClassを定義
class Dog {

   // ②プロパティを定義。今回は名前なので、$nameとしている
    private $name;

   // ③インスタンス化するときに引数を受け取れるようにしている
    public function __construct($name) {
          $this->name = $name;
    }

   // ④名前を取得するメソッドを追加
    public function getName() {
          return $this->name;
    }
}

インスタンス化

// ⑤Dog Classをインスタンス化している
$dog = new Dog("John");

// ⑥インスタンス化したメソッドを使って名前を取得し、$dog_nameに代入
$dog_name = $dog->getName();

// ⑦$dog_nameを表示
echo "名前: " . $dog_name . "\n";

継承(extends)

  • クラスのプロパティやメンバを、他のクラスで継承する場合はextendsを指定

継承の書き方

class クラス名 extends 継承元クラス名{
  処理
}

サンプル

<?php

// 親クラス
class ParentClass{
    public function kansuu01($watashiha){
        echo $watashiha.'親クラスの関数1です!';
    }
    public function kansuu02(){
        echo '親クラスの関数2です!';
    }
}

// 子クラス
class ChildClass extends ParentClass{
    public function kansuu01($watashiha){
        echo $watashiha.'子クラスです!';
    }
}

$parent = new ParentClass();
$child = new ChildClass();

$parent->kansuu01('私は');
$child->kansuu01('私は');

$parent->kansuu02();
$child->kansuu02();

?>

実行結果

私は親クラスの関数1です私は子クラスです親クラスの関数2です親クラスの関数2です
  • このサンプルでは親クラスであるParentClassと、子クラスであるChildClassクラスを定義
  • ChildClassではextendsを指定して、親クラスのParentClassクラスを継承しています。
  • クラスの継承を指定すれば、子クラスのインスタンスから親クラスのメソッドにアクセスできます。
  • 例がとてもわかりにいが、親クラスから子クラスに継承することで子クラスでの定義が何もなくても$child->kansuu02();を実行することができている点を確認できる。

抽象化(abstract)

  • まとめる

コンストラクタ(__construct)

  • コンストラクタとはクラスからインスタンスを生成するときに、最初に呼び出される関数のこと
  • コンストラクタは__construct()で定義し、newでインスタンスを生成すると必ず実行される
  • コンストラクタはクラスのインスタンスを生成する度に実行されるので、変数などを初期化する処理でよく使われる。

コンストラクタの定義

class クラス名{
    function __construct(){
        処理
    }
}

サンプル

class SampleClass
{
  protected $text;

  //コンストラクタの定義
  function __construct()    {
    $this->text = 'Samurai Engineer';
  }

  //メソッドの定義
  function show() {
    echo $this->text;
  }
}
//インスタンスの生成
$class = new SampleClass();

//メソッドの呼出し
$class->show();

実行結果

Samurai Engineer
  • サンプルプログラムではクラスのインスタンス生成と同時にコンストラクタ(__construct)が呼び出され、変数$textの初期化処理を行っている。
  • そのあとに「$class->show()」でメソッドを呼び出し、変数を参照すると変数に値が設定されていることが分かる
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