gpt4 book ai didi

php - 文件中的返回语句不会停止类定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:12 25 4
gpt4 key购买 nike

如此处所述php.net/return ,有一个选项可以停止执行 include with 'return' 语句。

谁能告诉我为什么会这样,如下所述

//测试1.php

include 'test2.php';
var_dump(class_exists('TestClass_ShouldntBeDefined'));

//测试2.php

return;
class TestClass_ShouldntBeDefined { }

//运行

$ php -f test1.php
bool(true)

为什么这是真的?

当 test2.php 被更改为任何其他形式的代码时执行 (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

最佳答案

return 结束执行,但不停止包含。

在第一种情况下,包含文件,返回后执行停止,控制权交还给test1.php。但是包含该类,因此 class_exists 返回 true。所以案例 1 按预期工作。

在第二种情况下,通过使用大括号,类定义成为执行的一部分。在定义类之前,return 结束了 include 的执行。

关于php - 文件中的返回语句不会停止类定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com