Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2010, 14:16
danmichel
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 0
PHP 5.2 vs PHP 5.3 parámetros por defecto

Hola encontré este código en un blog y me llamo mucho la atención y me di a la tarea de implementarlo en un proyecto personal.

Para ese momento tenia instalado wampserver el cual instala como todos sabemos php5, mysql y apache. Esta versión de wampserver instalaba php 5.2.
Hasta el momento el código me funcionaba muy bien y todo corría correctamente. Luego instale el XAMPP ya que a mi entender brinda mayores prestaciones además de tener la versión de PHP 5.3 y MySQL 5.1.37.

Y entonces comenzaron mis problemas, al parecer los argumentos por defecto en PHP 5.3 se pasan de otra forma.

Código PHP:
Ver original
  1. final class Database
  2. {
  3.     private static $dns       = DNS;
  4.     private static $username  = USERNAME;
  5.     private static $password  = PASSWORD;
  6.     private static $instance;
  7.     private static $PDO;
  8.  
  9.     private function __construct()
  10.     {
  11.     try {
  12.         self::$PDO = new PDO(self::$dns, self::$username, self::$password);
  13.         self::$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14.     } catch (PDOException $e) {
  15.         echo 'Connection failed: ' . $e->getMessage();
  16.     }
  17.     }
  18.     public static function getInstance()
  19.      {
  20.        if (!isset(self::$instance))
  21.        {
  22.          $c = __CLASS__;
  23.          self::$instance = new $c;
  24.        }
  25.         return self::$instance;
  26.      }
  27.  
  28.     public function query($statement, $PDO = null, $object = null)
  29.     {
  30.         return self::$PDO->query($statement, $PDO, $object);
  31.     }
  32. }
  33.  
  34. $db = Database::getInstance();
  35. $db->query('DESCRIBE `table`');

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: mode must be an integer' in D:\xampp\htdocs\db\Database.php:160 Stack trace: #0 D:\xampp\htdocs\db\Database.php(160): PDO->query('DESCRIBE `table...', NULL, NULL) #1 D:\xampp\htdocs\db\Database.php(393): Database->query('DESCRIBE `table...') #2 {main} thrown in D:\xampp\htdocs\db\Database.php on line 160


No entiendo porque este mismo codigo funciona bien en PHP 5.2 y en PHP 5.3 lanza este error.

Espero que alguno de ustedes me pueda ayudar