gpt4 book ai didi

php - 如果 include() 是有条件的,即使不满足条件,PHP 也会包含该文件吗?

转载 作者:可可西里 更新时间:2023-11-01 01:04:20 26 4
gpt4 key购买 nike

这个问题困扰我很久了,我想我应该向专家寻求答案。我想知道通过单个文件汇集所有 PHP 请求是否是一种糟糕的编程技术。我一直在一个网站上工作,不确定它是否会随着增长而扩展,因为我不能 100% 确定 PHP 如何处理 include() 函数。

为了更好地解释我是如何构建我的准框架的,这里是我的根 .htaccess 文件的一个片段:

# > Standard Settings
RewriteEngine On

# Ignore all media requests
RewriteRule ^media/ - [L]

# Funnel all requests into model
RewriteRule ^(.*)$ _model.php [QSA]

因此除了媒体目录中的内容之外的所有内容都被传递到这个单一脚本中。

_model.php 中,我有所有的输入清理、用户身份验证、从数据库中提取的 session 数据、任何全局变量(常用变量,如 $longTime、$longIP 等...)被设置。请求通过解释 $_SERVER["REQUEST_URI"] 变量进行路由。

本质上,我有一个 switch() 语句,它选择要include() 的模块。我不明白的是:当 PHP 执行时,它是否会执行每个 include() 而不管 case 指令是否为真?

我担心过一段时间我会有很多这样的模块——如果 PHP 在运行时包含所有模块,它最终会占用过多的处理能力和 RAM...

--

编辑:
我真的只是问 PHP 是否会“读取”它可能必须包含的所有那些文件。我知道它实际上不应该执行代码。如果我的一个 include() 是一个需要很长时间处理的 2GB 文件,PHP 是否会在执行之前始终读取该文件?

--编辑:
我发现了另一个类似的问题(我在发布这个问题之前搜索了很多) PHP behavior of include/require inside conditional

我想我可以关闭它。

最佳答案

不,PHP 会在到达代码片段的那一刻执行 include。

这很重要,因为你可以直接用代码包含 php 文件。例如

文件1:

<?php echo "Foo"; ?>

文件2:

<?php
echo "Before";
include("File1");
echo "After";
?>

有时您的 PHP 处理器甚至不知道在编译时要包含哪个文件。想象一下 include("File".mt_rand(1,10));。 PHP 直到到达 include 语句时才知道要包含的文件名。

关于php - 如果 include() 是有条件的,即使不满足条件,PHP 也会包含该文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727116/

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