PHPのクラス名の取得から名前の付け方まで徹底解説!

PHPの勉強を始めて聞く言葉だったクラス。

クラス名についてもわからない事が沢山。

・クラス名が重複したらどうするのか
・クラス名の付け方はどうするのか
・クラス名を取得するには

上記のような事に悩んではいないでしょうか。

今回はPHPのクラス名について以下の内容でお話します。

【基本】クラスについて
【基本】クラス名の付け方
【実践】クラス名の取得
【実践】クラスを変数で初期化

わかりやすく解説しますので、最後まで読んで頂けると幸いです。

目次

クラスについて

まずクラスとはなんでしょうか。

クラスはPHPファイルを作成して、以下のように記述します。

<?php
class SamuraiList
{
// 関数や変数を記述
}

複数の変数や、処理をまとめておく場所がクラスです。

なぜまとめる必要があるのか。

それは開発の規模が大きくなるほど機能も多く、複雑になります。

一括してまとめてわかりやすくしておく、というのがクラスの大きな役割です。

また、オブジェクト指向も理由の一つです。

オブジェクト指向について知りたい方は以下の記事をご覧ください。

クラス名のルール

クラス名を付ける時にどんな名前をつけたらよいのか初めは悩むでしょう。

ルールを決める

結論から言うと、英数字で書かれていれば動きます。

よってどんな名前でもよい、という事です。

しかし同じプロジェクトやシステム内ならばある程度ルールを決めておいた方がよいでしょう。

・始めと区切りを大文字にする(例:SamuraiList)
・複数形且つアンダースコア区切りにする(例:samurai_lists)

などです。

※フレームワークによっては初めから記述ルールが決まっている場合があります。

クラス名と関数名

また、関数(function)との名前付けとはルールを分けた方がよいと思います。

クラスは、扱うデータや機能名などがよいと言われます。

関数名には動作内容を入れるなど、動詞を含める事が多いです。

関数は以下のような名前付けになるでしょう。

function getSamuraiList(){
// 処理を記述
}

・get = 取得する
・StamuraiList = 侍リスト

のように関数に名前をつけます。

クラス名の重複について

同じクラス名を作成しないように気を付けます。

同じクラス名で別クラスを作成するとFatal errorが発生します。

勿論正常動作はしません。

クラス名の取得方法

クラス名を取得したいという場合も発生すると思います。

簡単な関数で取得できるので関数を紹介しましょう。

get_class関数です。

■使い方

get_class(★オブジェクトを指定);

【オブジェクトを指定】というのは、例えば「SamuraiList」というクラスの場合。

$samurai = new SamuraiList;

のように初期化をした後、オブジェクトを代入した変数を指定する事です。

get_class($samurai);

よって、上記のように記述するとクラス名が取得できます。

クラスを変数でオブジェクト生成(new)

クラスを呼び出す時に初期化(new)をすると思いますが、変数でクラス名を渡せるでしょうか

初期化(new)については以下を参考にしてください。

変数でクラス名は渡すことは可能です。

以下に通常版と変数版の初期化の記述を示します。

// 通常のnew
$samurai = new SamuraiList;

// 変数を使ったnew
$class_name = "SamuraiList";
$samurai = new $class_name;

呼び出すクラスを条件によって変更したいなどの場合に便利です。

まとめ

今回はPHPのクラス名についてお話しました。

クラスの事は学んでも、クラス名について意識的に勉強する機会は少ないかもしれません。

名前とはいえ色々な決まり事やルールが存在する事も知って頂きたいです。

それでは、また。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次