定義を別のファイルにまとめる

前回のプログラムは、クラス定義とクラスを使うコードを1つのファイルに書いていますので、非常にわかりにくにいプログラムでしたが、実は、PHPでは、記述の一部を他のファイルに保存しておき、必要に応じてそれをまとめて読み込んで利用することもできます。

例えば、前回の例でしたら、次のhitoクラスやhito2クラスの定義だけ別のファイル「hito_class.php」に保存しておきます。

hito_class.php

<?php
//hitoクラスの定義
class hito{
  public $namae;
  public $sintyo;

  function hyozyun(){
   $s =$this->sintyo/100;
   return $s*$s*22;
  }
}

//hito2クラスの定義
class hito2{
  public $taizyu;

  function bmi(){
   $s2 =$this->sintyo/100;
   return $this->taizyu/($s2*$s2);
  }

  function himan(){
   $b =$this->bmi();
   if($b>=40){
    print"肥満度4";
   }elseif($b>=35){
    print"肥満度3";
   }elseif($b>=30){
    print"肥満度2";
   }elseif($b>=25){
    print"肥満度1";
   }elseif($b>=18.5){
    print"普通体重";
   }else{
    print"低体重";
   }
  }
}
?>

■require_onceを使う

保存されているPHPスクリプトのファイルを読み込む命令はいくつか用意されていますが、ここではrequire_onceを使ってみましょう。require_onceでファイルを読み込むと、「ファイルを一度だけ」読み込み、「読み込めないときは処理を中止」します。

関数 require_once

書式 require_once(読み込みファイルのパス)

機能 ファイルを一度読み込み、読み込めないときは処理を中止

返り値 なし

「hito_class.php」を読み込む場合次のようになります。

require_once("hito_class.php");

クラスの定義ファイル「hito_class.php」は同じディレクトリに保存しておく。

これを使って、プログラムを書き直すと次のようになります。

class_bmi_3.php

<?php
require_once("hito_class.php");

$obj = new hito2();
$obj->namae ="西沢";
$obj->sintyo=175;
$obj->taizyu=80;


print $obj->namae."さんの健康チェック<br>";
print "標準体重は".$obj->hyozyun()."<br>";
print "体重は".$obj->taizyu."<br>";
print "BMIは".$obj->-bmi()."<br>";
print $obj->himan();
?>

実行結果

f:id:mkyosuke:20191204170757p:plain

クラス定義は別ファイル「hito_class_php」に書かれています。これを「require_once("hito_class.php")」で読み込めば、後は自由にhitoとhito2のクラスを利用することが出来るのです。

なお、この例では、読み込むhito_class.phpを公開するディレクトリに保存しましたので、require_onceの引数にファイル名だけを記述しましたが、たとえば公開するディレクトリに「class」ディレクトリを作成してそこに保存してある場合は、次のように引数をフルパスで指定します。

パスの区切りには「¥」ではなく「\」を使ってください。

require_once("./class/hito_class.php");