Buenas,
Haber si me podéis aclarar estas
cinco dudas que me surgen al crear mis propias clases :)
Utilizo PDO para conectarme a la base de datos.
1) Según he leído no hace falta sanar las variables que vienen por GET O POST ya que PDO se encarga automáticamente, es correcto? leído aquí...
http://www.arzion.com/empresa-de-int...-datos-con-PDO 2) Cuando la aplicación entre en producción debo quitar esta línea verdad?
$db->setAttribute(CountPDO::ATTR_ERRMODE, CountPDO::ERRMODE_EXCEPTION);
3) Para utilizar PDO en mi clase "categoria" ¿lo estoy haciendo bien, o existe otra forma mejor?
Código PHP:
Ver original<?php
require_once("configBD.php");
class db{
/*** Declare instance ***/
private static $instance = NULL;
/**
*
* the constructor is set to private so
* so nobody can create a new instance using new
*
*/
private function __construct() {
/*** maybe set the db name here later ***/
}
/**
*
* Return DB instance or create intitial connection
*
* @return object (PDO)
*
* @access public
*
*/
public static function getInstance() {
if (!self::$instance)
{
//self::$instance = new PDO('mysql:dbname='.$bd.';host='.$servidor.'', $user, $pass);;
self::$instance = new PDO("mysql:host=localhost;dbname=codelab", 'root', 'jupiter');; //asi funciona y con variables NO.
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
/**
*
* Like the constructor, we make __clone private
* so nobody can clone the instance
*
*/
private function __clone(){
}
} /*** end of class ***/
class Categoria{
private $nombreCategoria;
// Listar todas las categorias de la base de datos
public function listarCategorias(){
$query = sprintf("SELECT nombre FROM categorias"); $comando = DB::getInstance()->prepare($query);
$comando->execute();
while( $datos = $comando->fetch() ) {
// Imprimimos resultados
echo $datos[0].'<br />';
}
}
// Agrega una nueva categoria
public function agregarCategoria($nombre){
$this->nombreCategoria=$nombre;
$query = sprintf("INSERT INTO categorias (nombre) values ('$this->nombreCategoria')"); $comando = DB::getInstance()->prepare($query);
$comando->execute();
}
}
$cat = new Categoria();
$cat->listarCategorias();
$cat->agregarCategoria('nueva_cat');
?>
4) Debería tener separado la conexión a la base de datos o dentro de la clase categoría? Es necesario tener una clase global para la conexión a la base de datos. O con la utilización de PDO esto me lo puedo ahorrar?
5) Haciéndolo como en el ejemplo que puse arriba, cuantas instancias utilizo? Utilizo una ya que cuando se llama al metodo agregarCategoria() reutiliza la instancia de listarcategorias()?
Muchas gracias de antemano!