ここでphp.net/returnに記載されているように、includewith'return'ステートメントの実行を停止するオプションがあります。
これが以下のように機能する理由を誰が教えてくれますか
// test1.php
include 'test2.php';
var_dump(class_exists('TestClass_ShouldntBeDefined'));
// test2.php
return;
class TestClass_ShouldntBeDefined { }
// 走る
$ php -f test1.php
bool(true)
なぜこれが本当ですか?
test2.phpが他の形式のコードに変更された場合、execute(if(true) { ... }
)
return;
{
class TestClass_ShouldntBeDefined { }
}
その後、期待どおりに動作します
$ php -f test1.php
bool(false)
PHPバージョン
$ php -v
PHP 5.4.7 (cli) (built: Sep 13 2012 04:20:14)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans