Ada*_*dam 4 php return include
正如php.net/return所述,有一个选项可以使用'return'语句停止执行include.
谁可以告诉我为什么这样做如下所述
// test1.php
include 'test2.php';
var_dump(class_exists('TestClass_ShouldntBeDefined'));
Run Code Online (Sandbox Code Playgroud)
// test2.php
return;
class TestClass_ShouldntBeDefined { }
Run Code Online (Sandbox Code Playgroud)
// 跑
$ php -f test1.php
bool(true)
Run Code Online (Sandbox Code Playgroud)
为什么这是真的?
当test2.php改为任何其他形式的代码时execute(if(true) { ... }
)
return;
{
class TestClass_ShouldntBeDefined { }
}
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作
$ php -f test1.php
bool(false)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
返回结束执行,但不会停止包含.
在第一种情况下,包含文件,并在返回和控制返回后停止执行test1.php
.但是包含了类,因此class_exists返回true
.因此案例1按预期工作.
在第二种情况下,通过使用花括号,类定义成为执行的一部分.在定义类之前,返回结束include的执行.
归档时间: |
|
查看次数: |
107 次 |
最近记录: |