PHP列表MYSQLI_TYPE_INTERVAL
作为返回的列类型mysqli_result::fetch_field()
.
根据我的理解,间隔只是一个可以应用于日期/时间信息的度量单位.您不能在SQL中选择间隔作为纯数据,例如使用类似的查询SELECT INTERVAL 1 DAY
.
有人碰巧知道MYSQLI_TYPE_INTERVAL
用的是什么吗?
为了保持一致性,我从 PHP 7.1 开始为所有方法指定返回类型,包括像 这样的魔术方法__toString
,甚至当隐式返回类型类似于void
with时__unserialize()
:
class a {
function __toString() : string {}
function __unserialize ( array $data ) : void {}
function __wakeup() : void {}
}
Run Code Online (Sandbox Code Playgroud)
当我对构造函数和析构函数尝试相同时,如下所示:
class a {
function __construct() : void {}
function __destruct() : void {}
function __clone() : void {}
}
Run Code Online (Sandbox Code Playgroud)
PHP 产生Fatal error
s:
Constructor a::__construct() cannot declare a return type
Destructor a::__destruct() cannot declare a return type
Clone method a::__clone() cannot …
Run Code Online (Sandbox Code Playgroud) 尽管我的应用程序运行正常,但我收到类型错误。
“错误类型错误:无法读取 null 的属性‘替换’”
不明白如何解决这个问题。任何人都可以给我一些想法或帮助我理解为什么会发生这种情况吗?
if (isInitial) {
// Add Data Rows (initially)
for (const row of rows) {
const clientVisitGuid = row[2];
const location = row[3];
row[5] = row[5].replace(/\//g, '\/\u200B');
const service = row[5];
const rowId = `${service || 'zzz'}_${location}_${clientVisitGuid}`;
const sortString = `${service || 'zzz'}_${location}_${clientVisitGuid}`;
const daysPastDischarge = parseInt(row[6]);
const isMarked = parseInt(row[7]) === 1 ? true : false;
if (cbt.hasBodyRow(rowId) === false) {
const values: Array<[string, string | number]> = [];
let isAllClear = true;
for (let …
Run Code Online (Sandbox Code Playgroud) 可以使用动态调用函数或方法call_user_func_array
。如果调用本身失败,FALSE
则返回。此外,call_user_func_array
还返回所调用的函数或方法的返回值。
因此,当被调用的函数或方法FALSE
也返回时(例如,参见 SO示例),该值将被识别为误报。
如何可靠地检查函数或方法调用是否成功执行call_user_func_array
?
编辑:人们倾向于指出 的存在is_callable
。但这并不是在调用方法之前检查方法是否存在,从而避免可能的错误。实际上,在执行call_user_func_array
函数调用之前,它的参数和参数类型已经被验证Reflection
,以避免大规模分配攻击。
文档提到了返回值,但我没有看到如何使用它来检查调用是否成功。FALSE
在PHP文档指出,从版本5.4及以后:
添加了迭代器支持,因为mysqli_result现在实现了Traversable.
这意味着,mysqli_result
必须实施的迭代方法current()
,key()
,next()
,rewind()
和valid()
.
但是当我这样做时:
/** @var \mysqli */
$rStmt = $oMySQLi->prepare('<valid query>');
$rStmt->execute();
/** @var \mysqli_result */
$rRes = $rStmt->get_result();
$rRes->rewind();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
调用未定义的方法mysqli_result :: rewind()
?!