icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【PHPプログラミング】例えばベースurlみたいな情報を、複数のclass内で使いまわしたい(constクラス定数)

更新: 2024/05/12 2454文字

【PHPプログラミング】例えばベースurlみたいな情報を、複数のclass内で使いまわしたい(constクラス定数)

今回は、PHPプログラミング『constクラス定数』について扱います。PHPには定数を定義するファンクション『define』がありますが、クラス定数で使いまわすには、どのように書けばよいのでしょうか。早速確認していきましょう。

今回の趣旨、ベースurlなどを使いまわしたい

ちょくちょくこのサイトに登場して、最近も管理人が作っていた『getsimple改造CMS』のフロント記事取得ファイルです(コントローラー内にgetPageClassというクラスを作った)。この段階ではテストだったので、urlは直接書いて指定しています。

しかし、他のクラスが増えたり、ページが増えてきた場合、他のサーバーに上げる場合は、urlを全部変更するのが非常にめんどくさく、変更抜けが発生する可能性があります。これをクラス内定数で使いまわしてラクにしようというのが、今回の趣旨です。

PHPでの定数定義~constやdefine

PHPでの定数定義ファンクションというと、まずdefineがあげられます。システム上、configにまとめて設定されていることも多いような気がします。

このほかに、オブジェクト型で書いて、クラス定数として使う場合は『const』があります。今回はこちらの書き方でやってみましょうか。

コードと表示例

前提~今回エディットするファイル内にあるクラス構成

現在作っているgetsimple改造CMSは、フロントは結構自由に作れるというのを狙っているんですが、フロント用のコントローラーを用意して、その中にクラスを3つ用意しています。『自クラスからロード』と『他クラスからロード』で書き方が違うという点を押さえていただければと思います。

クラス名 内容
getPageClass 固定ページ用記事を取る
getSingleClass ブログ用記事を取る
getArchiveClass ブログ一覧を取る

クラスごとの書きかた

まずは、固定ページ用getPageClassに、constでリンクのベースurlを定義しました。自クラス内での呼び出しなので『self::定数名』で呼び出せます。なお、クラス名がきちんと指定されていれば『クラス名::定数名』でも呼び出せるのを確認しました。どちらでもokですが、自クラスのときはself::定数名がスマートですね。

getPageClass{
 const BASEURL = ‘http://localhost/gs-ce’;
中略~
 public function getFixedPage($pageName){
  switch ($pageName) {
   case 'front-page': $url = self::BASEURL ."/GetSimpleCMS/?id=index"
中略~
  }
 }
}

別のクラス『getSingleClassまたはgetArchiveClass』から呼び出すときは、クラス名が違うのでselfではなく『クラス名::定数名』で呼び出します。 getSingleClassまたはgetArchiveClassのときはこんな感じで書きました。

class getArchiveClass{
中略~
 public function __construct($arch_num){
$url= getPageClass::BASEURL . '/GetSimpleCMS/?archive='.$arch_num ;
中略~
 }
中略~
}

これでコントローラーに指定された全部のクラスで定数ロードできるはずです(ロードできない場合は、エラーで記事が表示されない)。

表示例(ロードできたか?)

それでは、上記の書き方できちんと定数がロードできたか確認しましょう。定数がロードできない場合は、記事取得urlが不完全になるので、エラーで記事が表示されなくなります。

まずはフロントページ(getPageClass)。ここはMV下のコメントをCMSから出力するようにしていますが・・ okです。表示されました。

次に、一覧部分(getArchiveClass)。 こちらもokですね。

最後に、個別のブログ記事(getSingleClass)。 こちらもok。

あとがき・まとめ

  • PHPの定数定義にはdefineとconstがあり、クラス定数として使いたい場合はconstを使う
  • 定義されたクラスと使用されるクラスが同じ場合は、self::定数名で呼び出せる
  • 定義されたクラスと使用されるクラスが違う場合は、クラス名::定数名と書く

まとめると、こんなところでしょうか。サイト/システム全体のconfigにはdefineを使うとしても、クラス内/外のときは『self::定数名/クラス名::定数名』などを使ってもokです。うまく使いまわして工数を削減しましょう。


【カテゴリ】- PHP
【タグ】-

関連記事