我决定升级到 PHP 8.1,修复了大部分警告,但无法处理数组。
<?php
add_action( 'init', 'update_status' );
add_action( 'admin_init', 'update_status' );
function update_status() {
// Получаем активных пользователей из transient.
$get_users = get_transient( 'get_users' );
// Получаем данные текущего пользователя.
$current_user = wp_get_current_user();
// Обновим пользователя, если его нет в списке или если он не был на сайте в течение последних 60 секунд.
if ( ! isset( $get_users[ $current_user->ID ]['last'] ) || $get_users[ $current_user->ID ]['last'] <= time() - 60 ) {
$get_users[ $current_user->ID ] = [
'id' => $current_user->ID,
'username' => $current_user->user_login,
'last' => time(),
];
// Установим для этого transient на срок действия 1 минуту после его создания.
set_transient( 'get_users', $get_users, 1 * MINUTE_IN_SECONDS );
}
}
?>
问题行: $get_users[ $current_user->ID ] = [... 出现错误: 已弃用:不推荐将 false 自动转换为数组
帮我解决这个问题,我什至无法想象还能做什么。
get_transient如果交通不存在,该函数返回 false。当请求在前面,用户没有登录时,那么ID = 0,而user_login字段根本不存在于对象中,这又是一个错误。
好吧,
1 *写下去没什么意义。此代码在静态分析(phpcs、EA、PhpStorm 检查)期间不会生成错误,并且在执行时不会抛出已弃用的错误。