Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的include_once只是该文件的一个静态“实例”?_Php_Static_Include_Grok - Fatal编程技术网

PHP的include_once只是该文件的一个静态“实例”?

PHP的include_once只是该文件的一个静态“实例”?,php,static,include,grok,Php,Static,Include,Grok,阅读了关于include_的文档后,它基本上说,如果已经包含该文件,则不会重新包含该文件 在我的头脑中,我可以把这等同于脚本的静态实例,还是这会给我带来麻烦 编辑 我不想找一次关于include_的教程,我很理解它。我想知道我是否能在概念上将静态成员的属性和特征附加到这个想法中 编辑2 下层选民愿意解释一下吗?这是一个概念性的问题,有一个明确的答案。我不确定实际功能是如何工作的,但最好的思考方式是: 如果此文件已在此流中包含/要求较早,则无需再次包含/要求它 关键是要避免包含重新定义类或函数的文

阅读了关于include_的文档后,它基本上说,如果已经包含该文件,则不会重新包含该文件

在我的头脑中,我可以把这等同于脚本的静态实例,还是这会给我带来麻烦

编辑

我不想找一次关于include_的教程,我很理解它。我想知道我是否能在概念上将静态成员的属性和特征附加到这个想法中

编辑2


下层选民愿意解释一下吗?这是一个概念性的问题,有一个明确的答案。

我不确定实际功能是如何工作的,但最好的思考方式是:

如果此文件已在此流中包含/要求较早,则无需再次包含/要求它

关键是要避免包含重新定义类或函数的文件,因为它已在前面包含的同一个文件中定义

要记住的重要一点是,脚本和所有包含的脚本都有一个开始和一个结束。对include_once的任何调用都会检查自整个脚本开始以来是否已包含该文件。如果有,它就不必再次包含它,它只是从最初包含的文件中消失


脚本完成后,无需完成任何工作,流关闭、中断、中止等,然后重新启动流程将文件的第一次包含/包含视为第一次包含,因为这是自新运行脚本以来第一次包含该文件。在这种情况下,您将返回到原点,所有值都设置为默认值或未设置。

一旦包含它,任何值和属性都应保留在该流中。因此,如果您使用静态值调用函数,并且稍后在同一流中再次包含该脚本,则不会重新包含该脚本,因此静态值应保持不变。当你有疑问的时候,打开盒子。嗯,听起来你们两个说的是不同的东西。@Anthony-我想你最清楚地理解了我说的话。这样想是安全的,还是我以后会有一些不可预见的事情发生呢?这可能取决于你们所说的静态成员是什么意思,我很快就搞不清楚了。但是就像我说的,测试一个简单的场景比等待一个明确的答案要容易得多,当涉及到PHP时,可能没有一个答案。@Steve-如果脚本从头开始重新运行,重新加载浏览器,等等,那么所有值都设置为原始值。但是,如果以后在同一个编译中再次包含脚本,它应该保留它保留的任何值。因此,不能将其视为静态的,因为没有全局上下文,它只在本地实现,不会持久。谢谢,很有帮助!看看PHP的SPL库引入的发布/订阅技术。有很多方法可以隐藏值以访问跨会话,它只是变得更加复杂。好的,干杯。只是今天的概念问题。虽然进展不太顺利,但最终得到了明确的答案。