动态属性CI_URI::$config的创建已被弃用。

12

遇到了 PHP 错误

严重程度:8192

消息:创建动态属性 CI_URI::$config 已过时

文件名:core/URI.php

行号:102

回溯:

文件:C:\xampp\htdocs\inv_perpus\index.php 行号:288 函数:require_once


您试图在一个对象上设置一个不存在的属性,这会污染该对象。 - zanderwar
我的CodeIgniter版本是3,因为它是我的学校作业而且我的XAMPP版本是8.2.0。 - Hii
我已经为您提出了一个问题,并打开了拉取请求以解决它:https://github.com/bcit-ci/CodeIgniter/issues/6192 - zanderwar
1
告诉你的学校停止强制使用已经停止维护且不再接收安全更新的PHP版本构建的软件包。CI3是为PHP5.4构建并保持兼容,这意味着它缺少了整个世界的改进和功能。 - zanderwar
参见:https://stackoverflow.com/questions/74878889/php-warning-deprecated-creation-of-dynamic-property-is-deprecated - undefined
显示剩余2条评论
3个回答

20
我认为更好的方法是实现#[\AllowDynamicProperties]
更简单,也更短。
在上述提到的所有类中,在class xxxxxx {之前添加#[\AllowDynamicProperties]
这是我的修改:

/system/core/URI.php

#[\AllowDynamicProperties]

class CI_URI {

/system/core/Router.php

#[\AllowDynamicProperties]

class CI_Router {

/system/core/Loader.php

#[\AllowDynamicProperties]

class CI_Loader {

/system/core/Controller.php

#[\AllowDynamicProperties]

class CI_Controller {   

/system/database/DB_driver.php

#[\AllowDynamicProperties]

abstract class CI_DB_driver {

来源:https://github.com/bcit-ci/CodeIgniter/pull/6193#issuecomment-1397221543

10

这是一个与CodeIgniter相关的问题。

/system/core/URI.php中,您可以在类顶部添加以下内容来解决它:

/**
 * CI Config
 *
 * @var CI_Config
 */
public $config;

或者,您可以通过以下两种方式之一禁用弃用警告:

php.ini

error_reporting = E_ALL & ~E_DEPRECATED

在代码中:

ini_set('error_reporting', E_ALL & ~E_DEPRECATED);

当然,禁用这些错误是不好的做法,因为这些错误应该被大声地听到并迅速修复。

向CodeIgniter提出了一个问题并打开了一个拉取请求,以便在他们的下一个版本中解决这个问题。他们应该会很快处理并发布补丁,所以现在就让它自然而然地发生,暂时消除错误提示。

这个问题已经在CodeIgniter 4中得到解决。


-2

虽然这不是最佳实践,但在我的情况下,与其设置错误报告,更好的解决方案是在每个报告行的开头添加@字符。


对于已弃用的功能,这是一个非常糟糕的想法,因为在更新到下一个PHP版本之前,应该替换它们。忽略弃用消息意味着您的代码将停止工作,而没有任何信息提示。 - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接