只有变量应该通过函数引用来分配

Posted

技术标签:

【中文标题】只有变量应该通过函数引用来分配【英文标题】:Only variables should be assigned by reference with function 【发布时间】:2017-06-06 23:27:49 【问题描述】:

我使用旧版本的 Codeigniter 框架。使用新版本的 php 我收到此错误: Only variables should be assigned by reference

我想知道这是否是安全的错误修正: 改变:

 $this->_base_classes =& is_loaded();

$assign = is_loaded();    
$this->_base_classes =& $assign;

是一样的吗?

【问题讨论】:

【参考方案1】:

请看这个网址

https://github.com/bcit-ci/CodeIgniter/issues/904

你可以去file: system/core/Loader.php 然后 file: system/core/Common.php第190行应该有:

function &is_loaded($class = '')

【讨论】:

【参考方案2】:

这是一个旧版本不再支持mysql的codeigniter错误。

你可以去文件:system/core/Loader.php 然后文件:system/core/Common.php 第190行应该有:

//function is_loaded($class = '') >>> Edit this one like the expression below

  function &is_loaded($class = '')

function &is_loaded($class = '')

之后转到文件:application/config/database.php 并更改以下内容:

//$db['default']['dbdriver'] = 'mysql'; >>> Edit this one like the expression below.

$db['default']['dbdriver'] = 'mysqli';

我希望它有效

【讨论】:

您应该编辑您的帖子以包含代码格式。另外,这是否会将实际的 SQL 驱动程序更改为不同的数据库驱动程序?【参考方案3】:

system/core/Loader.php中删除第150行

$this->_base_classes =& is_loaded(); ..

【讨论】:

【参考方案4】:

转到文件:system\core,您将找到一个名为 Common.php 的文件 打开文件并转到第 190 行 你会在哪里找到function is_loaded($class = '') 用这行代码替换它function &is_loaded($class = '')

【讨论】:

直接在内核中更改文件不是一个好主意。正确的方法是将该文件复制到 application/core/MY_Common.php 并在其中更改它,保持原始文件不变。 为什么你觉得这不是一个好主意??我自己试过了,对我没有任何问题。 因为如果您需要将该版本的 codeigniter 升级到更新的版本并修改系统文件会让您更加头疼。【参考方案5】:

改变

$this->_base_classes =& is_loaded();

$this->_base_classes = $this->is_loaded();

为我工作。

【讨论】:

以上是关于只有变量应该通过函数引用来分配的主要内容,如果未能解决你的问题,请参考以下文章

c++中函数中变量内存分配以及返回指针引用类型的思考

Swift 函数是按值还是按引用分配/传递?

Java实参和形参与传值和传引用

PHP中的ArrayAccess——通过引用分配给偏移量

通过值或常量引用传递给函数?

分配错误之前引用的Python局部变量