頑張らない!でも諦めない!必死にならずにええかげん

include_once(include) は戻り値が返されるの!?

   

Google or AdMax Promotion(it)

PHPで処理を書いているときによく利用するのが、include_once ();です。
このinclude_once ではその名の通り一度読み込みを行ったら読み込まないという命令で、
include();とは異なって複数回の読み込みを抑えることができ便利です。
このinclude_once(include)が実は戻り値を返してくれるんですね。
あまり用途はないとは思いますが、
warning を出力しない本番環境などでは利用価値があるかもしれません。

 

includeとrequireの違い

includeとrequireの違いはファイルが存在するか否かによって挙動が異なっています。

PHP: include – Manual

include は、ファイルを見つけられない場合に warning を発行します。一方 require の場合は、同じ場合に fatal error を発行する点が異なります。

ですので、include_once();はファイルがない場合には、
warningが出力されますが、プログラムはそのまま実行されます。

このwarningに関してはPHP.iniの設定によっては出力しないようにしていることもあるでしょう。
実際、運用環境は出力しない方が望ましい。

 

プロモーション(btm)

Google or AdMax Promotion (it)

include、include_onceから戻り値を受け取る

さて、そんな時に本番環境に導入したプログラムが動かずに、
迷ってしまうことがあります。

設定を変えてwarningを出力するようにしてもいいのですが、
本番環境の設定に変更を入れたくない。

そんな時には、以下のように戻る値を利用することができるかと思います。
2行目、5行目にて include();の戻り値を変数に代入しています。

普通はこんな書き方しないよな・・・と思う。

※ここではショートコード化してWordPressに実行させています。
WordPressのショートコードについては以下でご紹介しています。

 

実行結果(一部マスク処理)

Warning: include_once(functions_for_test_inc2.php) [function.include-once]: failed to open stream: No such file or directory in H:\(略)\functions_for_test.php on line 13

Warning: include_once() [function.include]: Failed opening ‘functions_for_test_inc2.php’ for inclusion (include_path=’.;C:\php\pear’) in H:\(略)\functions_for_test.php on line 13
成功:1(boolean)
失敗:(boolean)

 

正しく読み込みできた場合には「1(True)」が戻り、
ファイル指定が誤っている場合には「 (False)」が戻っています。

 

さいごに

慎重にプログラムを書くなら、include部分で毎回戻りを受け取っておき、
エラーに飛ばしたり、メッセージを表示したりといった形で、
どこがおかしいのかをヒントにすることもできるように思います。

Warning表示があれば、それだけでも十分解決策にはなるとは思いますが、
意外な書き方が動作したので少し驚きました。

自分がこんな書き方を利用するかは、わかりませんがメモ程度にご紹介します。

 

メモ

本当はショートコード内で1回だけincludeさせて、
外部ファイルからの出力を変数に格納して、1度だけ出力されるような内容を、
ショートコードで返せないかな・・・と思ったんですけどね。

同じショートコードを複数埋め込んだ時に、
1度だけ出力させたいものがあったもので。

 

例えば、JavaScriptやCSSの読み込みタグとかなんかも考えられる用途かと。
<link rel=”stylesheet” href=”” type=”text/css” media=”all”>など。

今回はPOST用に、隠しFormを出力したかったんですが、
複数のショートコードから共用するFormだと1つしか必要ないんですよね。

どうやって実現しようかな・・・。

別ショートコードにして、一度埋め込めば済む話ではあるんですが。。。

 


*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。
アルゴリズン


役に立ったと思っていただけたら、以下からシェア頂けたら幸いです^^

QRコードからもこのURLを開けます。

Pitta Promotion

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。
ロゴの使用等に関する苦情・ご意見等がございましたら管理者までご連絡ください。

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

Rakuten Promotion

 - PHP

  関連記事