2012-08-02 17 views
36

I Actualizar la versión de MyPHP a 5.4 (Xampp 1.7.3 a 1.8.0). Ahora veo estrictos estándares de error, por myDBconnection:Estándares estrictos: solo las variables se deben asignar por referencia PHP 5.4

normas estrictas: Sólo las variables deben ser asignadas por referencia en C: \ xampp \ htdocs \ Alous \ include \ dbconn.php en la línea 4

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'"); 
?> 

Nota: no necesito desactivar normas estrictas en php.ini con este método error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT! Quiero arreglar mi código PHP

+0

Desaparece la advertencia si modifica la línea 4 a '$ conn = ADONewConnection ($ config ['db_type']);' –

Respuesta

67

Debe quitar el símbolo & (comercial), de manera que la línea 4 se verá así:

$conn = ADONewConnection($config['db_type']); 

De php's manual on assignment by reference:

A partir de PHP 5, el nuevo operador devuelve una referencia automáticamente, entonces asignando el resultado de resultados nuevos por referencia en un mensaje E_DEPRECATED en PHP 5.3 y posterior, y un mensaje E_STRICT en versiones anteriores .

+5

Sin embargo, él no está usando 'new'. – sam

+12

Sí, '&' debe eliminarse en esta instancia, pero no por el motivo give (como @sam sugiere). Es simplemente que el resultado de la asignación no es una _variable_, que da como resultado un mensaje E_STRICT, no una advertencia E_DEPRECATED, que es lo que sucede con el operador 'new'. De hecho, el uso de '= &' podría ser realmente válido si 'ADONewConnection()' _function_ está establecido en [return a reference] (http://www.php.net/manual/en/language.references.return.php) – MrWhite

8

Es porque estás tratando de asignar un objeto por referencia. Elimine el signo y su secuencia de comandos debería funcionar como se esperaba.

-13

Tuve este problema también.

no vi ningún cambio después de la alteración:

error_reporting = E_ALL 

display_errors = Off 

cerrado mi navegador, y detiene y se inicia Apache en XAMP en mensajes de error se habían ido.

+8

¡Ocultar el error no es una solución! – kanenas

+0

Ocultar el error no es una BUENA solución. Desafortunadamente, es una "solución" a la que necesito encontrar otra solución mejor de vez en cuando. –

Cuestiones relacionadas