严格标准:只应通过参考PHP 5.4分配变量

BBK*_*ing 43 php porting reference

我将MyPHP版本升级到5.4(Xampp 1.7.3到1.8.0).现在我看到严格标准错误,因为myDBconnection:

严格标准:只应在第4行的C:\ xampp\htdocs\alous\include\dbconn.php中通过引用分配变量

dbconn.php:

<?php
defined('_VALID') or die('Restricted Access!');

$conn = &ADONewConnection($config['db_type']); // <--- This Line 4

if ( !$conn->Connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name']) ) {
    echo 'Could not connect to mysql! Please check your database settings!';
    die();
}
$conn->execute("SET NAMES 'utf8'");
?>
Run Code Online (Sandbox Code Playgroud)

注意:我不需要在php.ini中使用此方法禁用严格标准error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT!我想修复我的PHP代码.

Oza*_*ray 75

您应该删除&(&符号)符号,以便第4行看起来像这样:

$conn = ADONewConnection($config['db_type']);
Run Code Online (Sandbox Code Playgroud)

php的手册中分配参考:

从PHP 5开始,new运算符会自动返回一个引用,因此在PHP 5.3及更高版本中分配新引用的结果会产生E_DEPRECATED消息,在早期版本中会产生E_STRICT消息.

  • 是的,在这种情况下应该删除`&`,但不是因为给出的原因(如@sam建议的那样).简单来说,赋值的结果不是_variable_,这会导致E_STRICT消息,而不是E_DEPRECATED警告,这就是`new`运算符所发生的情况.事实上,如果将`ADONewConnection()`_ function_设置为[返回引用],则使用`=&`实际上是有效的(http://www.php.net/manual/en/language.references.return.php ). (12认同)
  • 但他并没有使用"新". (5认同)

Vet*_*elS 10

这是因为你试图通过引用分配一个对象.删除&符号,您的脚本应按预期工作.