修改注释位置

NathanFreeman 3 weeks ago
parent d3c7bcfa64
commit ef840ff915
  1. 18
      src/Translator.php

@ -3177,6 +3177,15 @@ CODE;
$cppCode .= $this->genWrapperRequiredArgCountCheck($functionDef, $displayName);
}
/**
* 若当前文件声明了 declare(strict_types=1);,则需为当前函数标记 ZEND_ACC_STRICT_TYPES 标志。
* 该标志用于确保函数在通过 ZendVM 调用其他函数时,能够严格按照声明模式校验参数类型。
* 需要注意的是,此机制仅作用于 ZendVM 动态调用的函数,
* 若目标函数为编译后的本地代码,则不会触发类型检查——这是 ZendVM 的设计使然,其哲学是信任已编译内部函数的 C 代码实现。
*
* 类型检查仅在二进制模式下启用。由于二进制模式作为独立可执行程序运行,需保持和直接运行的PHP代码一致的行为语义,因此必须保留类型检查以确保安全性。
* 相反,当编译为扩展(如 ext/curl)时,编译端无需强制内置类型检查,其开启与否应由调用方PHP代码自行决定。
*/
$cppCode .= $this->genDeclareStrictTypesCode();
foreach ($functionDef->argInfoList as $k => $argInfo) {
@ -4892,15 +4901,6 @@ CODE;
return $code;
}
/**
* 若当前文件声明了 declare(strict_types=1);,则需为当前函数标记 ZEND_ACC_STRICT_TYPES 标志。
* 该标志用于确保函数在通过 ZendVM 调用其他函数时,能够严格按照声明模式校验参数类型。
* 需要注意的是,此机制仅作用于 ZendVM 动态调用的函数,
* 若目标函数为编译后的本地代码,则不会触发类型检查——这是 ZendVM 的设计使然,其哲学是信任已编译内部函数的 C 代码实现。
*
* 类型检查仅在二进制模式下启用。由于二进制模式作为独立可执行程序运行,需保持和直接运行的PHP代码一致的行为语义,因此必须保留类型检查以确保安全性。
* 相反,当编译为扩展(如 ext/curl)时,编译端无需强制内置类型检查,其开启与否应由调用方PHP代码自行决定。
*/
private function genDeclareStrictTypesCode(): string
{
return $this->declareStrictTypes && $this->isBuildModeBin()

Loading…
Cancel
Save