2015年10月30日

PHP 外部ファイルの関数の呼び出し その1

«
»

Pocket

今回は外部ファイルの関数の呼び出しについて書いていきます。
タイトルだけみると「なんのこっちゃ?」と思いますが安心してください。
さっそくサンプルプログラムをみてみましょう。
 


<?php

$a = 2;
$b = 1;
$c = $a - $b * $a; 

echo return_word($a); //function3.phpの関数を使いたいと思ってる
echo "<br>"; //改行

echo return_word($b); 

echo "<br>"; //改行

echo return_word($c); 

?>

実行結果

PHP Fatal error Call to undefined function

解説

このプログラムでやりたかったことは、前回作成したreturn_word関数
これはfunction3.phpに書いています。
これを、function4.phpからも使いたいなーと思って、書いてみた、
という状況です。
 
しかし、実行結果は「Fatal error Call to undefined function
ということで、日本語にすると「致命的なエラー、未定義の関数の呼び出し
ということで、エラーになりました。
やはり、違うファイルに定義されている関数を簡単には使えないようです。
 
PHP 外部ファイル 関数 エラー

非効率だけどできるやり方

まずは、非効率ですが、実現可能なやり方を紹介します。
ただし、非効率とはわかっていても、ついついやってしまう時があります。。。
 
スクリーンショット 2015-10-30 6.11.40
 
これはつまり、function3.phpに書いてある関数をコピーして、
function4.phpにペーストする
、ということです。
 


<?php
function return_word($data){ //関数をコピペしてくる
	if($data == 1){ 
		return "a"; 
	}else if($data == 2){ 
		return "b";
	}else{ 
		return "c";
	}	
}
$a = 2;
$b = 1;
$c = $a - $b * $a; 

echo return_word($a); //上部の関数が実行される
echo "<br>"; //改行

echo return_word($b); 

echo "<br>"; //改行

echo return_word($c); 

?>

コピペすればちゃんと動きます。以下が実行結果です。
 
PHP 関数 コピー
 
しかしながら、関数を使うたびにコピペしなきゃいけないのか?
と思うと、なんだか非効率な気がします
上の画像に書いた通り、もっと賢い方法があります。
それはまた次回に。

まとめ

・他のファイルに定義された関数を他のプログラムから呼び出すとエラーになる
・非効率だが、関数をコピペすればエラーは回避できる
・「Fatal error」とは致命的なエラー

【関連する記事】