Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

The return value of include

via. http://www.urdalen.com/blog/?p=257

まあ、知ってる人は知ってると思いますが、inclue/include_onceはrequire/require_onceと違って値を返します。
たとえば、foo.phpで共通関数を定義してあった場合、

$ret = include 'foo.php';
var_dump($ret);   // true

な感じです。これは知ってた。
で、foo.phpでreturn文で値を返していた場合、その値が返ってきます。たとえば、先ほどのfoo.phphttp://www.urdalen.com/blog/?p=257のconfig.phpみたいに

<?php
return array(
  'hostname' => 'localhost',
  'database' => 'test',
  'username' => 'test',
  'password' => 'test',
);

な場合、$retの値は

array(4) {
  ["hostname"]=>
  string(9) "localhost"
  ["database"]=>
  string(4) "test"
  ["username"]=>
  string(4) "test"
  ["password"]=>
  string(4) "test"
}

になります。って、えー!知らんかった。。。まあ、使わないけど。というか、そもそもinclude/include_onceするファイルでreturnするのってどうかと。

ちなみに、include_onceを使って2回読み込む場合、

$ret = include_once 'foo.php';
var_dump($ret);
$ret = include_once 'foo.php';
var_dump($ret);

1回目は配列、2回目はtrueが返ってきます。まあ、何となく想像できますが。


にしても、これが必要な場面って。。。