As indicated here by php.net/return , it is possible to terminate the include statement with the return statement.
Who can tell me why this works as below
//test1.php
include 'test2.php'; var_dump(class_exists('TestClass_ShouldntBeDefined'));
//test2.php
return; class TestClass_ShouldntBeDefined { }
// run
$ php -f test1.php bool(true)
Why is this so?
When test2.php changes to any other form of code execution ( if(true) { ... } )
return; { class TestClass_ShouldntBeDefined { } }
then it works as expected
$ php -f test1.php bool(false)
PHP version
$ 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
source share