程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决php7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么??

开发过程中遇到php7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?的问题如何解决?下面主要结合日常开发的经验,给出你关于php7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?的解决方法建议,希望对你解决php7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?有所启发或帮助;

在调试大量代码时,我遇到了以下与我的调试完全无关的问题。我确实花了过多的时间在 Google 上搜索合理的解释:

const 内、在条件 (function) 内、在包含的外部文件的 if 内声明 require。 注意:这不是定义为类结构的一部分!!

既然这个 const 是在条件的上下文中定义的,让它运行时? vs 编译/解析时,这应该(恕我直言)给出了错误,但不仅没有错误,而且代码已经在生产环境中完美运行了三年多!

很想听听专家的解释,甚至是我明显遗漏的线索!

第一季度。为什么常量 _DEFITEM 不报错?

第二季度。为什么即使未使用 define 定义常量 _DEFITEM 也能工作?

在此先感谢您,特别是感谢 Js,以及该社区在过去十年中所做的出色工作!

php Manual

If an include() is conditional,will php include the file even if the condition is not met?

https://wordpress.stackexchange.com/questions/143439/conditionally-include-files-in-functions-php

CODE:带有被调用函数的简单存根,检查“SAVE”的传值参数,有条件地包括(始终可用)保存模块文件,然后调用其主要功能。包含的(需要)保存模块文件在顶部有 const 声明。

下面人为但准确的代码表示!省略号代表其他代码

//  main_stub3.php     php file processing clIEnt request (included within a main page/script)
<?php
function List_vIEw_save_proc_stub3 (fn_param1,fn_param2...)  {
...
if ("VIEW" === fn_param2)  {
   ...
}
else
if ("SAVE" === fn_param2)  {
   ...
   require _INC . proj_save_module_file.php;           //  _INC is a global constant (path)
   sv_mod_fn ();
}
else
   ...
}  //  END fn List_vIEw_save_proc_stub3
//  END main_stub3.php


//  proj_save_module_file.inc   include file that contains a const declaration and a function
const _DEFITEM = [ 'it_ID' => 0,'it_name' => '',... ];   //  about ~50 items in array

function sv_mod_fn ()  {
//  some std error checking,building of a row,db connectivity and insertion +
//  message output to clIEnt
...
}

解决方法

人们经常将 php 称为“脚本”甚至“解释”语言,但与大多数现代语言一样,它确实具有不同的编译执行步骤。许多细节通常并不相关,但对您在这里的误解至关重要。

php 在第一次需要时编译文件;它也可以(通过 the OpCache extension)缓存这个编译的结果。重要的是,它总是一次编译一个文件,无论该文件如何使用。因此,在编译时发生的一切都基于仅查看该单个文件就可以知道的内容。

一旦文件被编译,它可以被执行任意次数(在同一个请求中,或者稍后从 OpCache 内存中获取它)。因此,在执行时发生的所有事情都可以了解有关它正在运行的当前上下文的所有信息。

要理解你的代码,你只需要知道两件事:

  • const 在编译时求值
  • require 在执行时求值

手册中说 const 不能在条件中使用的意思是,当编译文件时,定义无条件地成为编译代码的一部分。该文件所属的每个程序都将包含该常量定义。这与 define 不同,require 的编译有点像函数调用——它变成了一个标记,说“当你到达程序执行的这一点时,定义这个常量”。

但是,编译该文件并不会使其成为您程序的一部分。要使其成为程序的一部分,您可以在执行时使用 require(或其亲属)。

只有在执行 require 行时,编译后的文件才会成为您正在运行的程序的一部分。它可能会及时编译以执行,或者从几个小时前编译的 OpCache 中获取,但无论哪种方式,它都只有在实际达到 require 时才执行const 可以是可选的,因此您可以根据星期几、随机或根据用户输入决定包含不同的文件。

php 而言,Sub deleteRow() Dim r As Long Dim FirstRow As Long Dim LastRow As Long FirstRow = 3 LastRow = Cells(Rows.Count,"B").End(xlUp).Row - 1 For r = LastRow To FirstRow Step -1 If Cells(r,"B") = 0 Then Rows(r).delete End If Next r End Sub 定义被无条件编译成一个代码单元,有条件地包含在您的程序中

大佬总结

以上是大佬教程为你收集整理的PHP7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?全部内容,希望文章能够帮你解决PHP7 const 在条件(if)中的 require(外部文件)中定义正在工作 - 为什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。