Help us understand the problem. What is going on with this article?

【PHP勉強中です!】クラスについて

はじめに

PHPの勉強をし始めた初心者ですが、勉強していることのメモとして投稿します。
(ちなみに初投稿です・・・)
同じようにPHP初心者の方に読んでいただけたら嬉しいです。

この記事では、PHPのクラスについてまとめています。

クラスとは

クラスとは変数と関数の集まりのことです。
クラス内では、変数のことをプロパティ、関数のことをメソッドと呼びます。

アクセス修飾子

アクセス修飾子を使うと、そのクラスがどこからアクセスできるのか指定することができます。
アクセス修飾子は以下の3種類です。

  • public→どこからでもアクセス可能
  • private→クラス内のみからアクセス可能
  • protected→クラス内とそのクラスの継承した子クラスからアクセスが可能

アクセス修飾子を指定しないとpublicになります。

クラスを定義する構文

class クラス名 {
    $変数名

    function 関数名(引数) {
    }

}

クラスを使うメリット

クラスを定義することで、簡単に変数や関数をまとめたものを使い回すことができます。
クラスを使いまわせる状態にすることをインスタンス化と呼びます。
そして、クラスをインスタンス化して使いまわせる状態にしたものをインスタンスと呼びます。

例えると、

  • クラス→車の設計図
  • インスタンス→車
  • インスタンス化→車を作成

というような感じです。
車の設計図(クラス)があればいくつも車(インスタンス)を作ることができます。

クラスからインスタンスを作成する構文

$変数名 = new クラス名(引数)

    function 関数名(引数) {
    }

}

作成したインスタンスは変数に代入します。
インスタンスは基本的に変数に代入して使うそうです。

インスタンスのプロパティやメソッドにアクセスする方法

アロー演算子というものを使います。

$インスタンスを代入した変数名 -> 呼び出したいインスタンスのプロパティ・メソッド名

クラスのプロパティとメソッドについて

先ほどは、インスタンスのプロパティとメソッドについて紹介しましたが、
実は、クラスのプロパティとメソッドというものもあります。

"static"という修飾子をつけることでクラスのプロパティ・メソッドになります。

アクセス修飾子 static $プロパティ名
アクセス修飾子 static function メソッド名 (引数) {
 //処理
}

staticについて

static宣言した場合、クラスに属したプロパティまたはメソッドになります。
そして、staticがあるプロパティとメソッドをそれぞれ、静的プロパティ静的メソッドと呼びます。

一方、staticを宣言しなかった場合、インスタンスに属したプロパティまたはメソッドになります。
staticがないとプロパティとメソッドは、インスタンスプロパティインスタンスメソッドとなります。

コンストラクタとは

コンストラクタとは、new演算子でインスタンス化するときに実行される特別なメソッドのことです。
メソッド名に __construct() と記述することで定義できます。

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

コンストラクタはプロパティを初期化するときなどに使います。

$thisとは

$thisとは、インスタンス自身を指す特別な変数です。
インスタンス自身を指すので、インスタンスメソッドないでしか使うことができません。
また、静的メソッドの中でも使うことはできません。

クラスの継承について

クラスの継承とは基となるクラスの変数や関数を引き継いだ新しいクラスを定義することです。
基となるクラスを親クラス(スーパークラス)、継承したクラスを子クラス(サブクラス)と呼びます。

クラスを継承する構文

class クラス名 extends 親クラス{
}

継承における親子関係

PHPでは、親クラスを複数指定する継承する多重継承はできず、
ひとつの親クラスから継承する単一継承ができます。

子クラスは親クラスの変数や関数を引き継いでいますが、
反対に親クラスは小クラスの変数や関数を引き継ぐことはありません。

オブジェクトについて

オブジェクトは人によって、定義が異なりますが、

  • クラスとインスタンス
  • クラスのみ
  • インスタンスのみ

の3パターンを指していることが多いです。
オブジェクトと言われたときに何を指しているのかを考えて、適切なもの置き換えることが大切です。

最後に

最後まで読んでいただきありがとうございました。

この記事は、以下の記事を参考にさせていただきました。

【PHP超入門】クラス~例外処理~PDOの基礎

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away