Takashi escribió:
podrias explicarme mejor el metodo getData?? no entiendo muy bien que es lo que hace la funcion is_resource y tampoco MYSQL_ASSOC. Y porque colocas el $resource = NULL al momento de recibir el parametro???
mmm a ver, lo que hago en getData es colocar el resultado de la consulta en un arreglo en el caso de que sea un recordset (resultado de tipico select), sino es un select, es decir, que sea un insert, update o delete, no devuelven un resource(RecordSet) sino un entero que indica si se llevo con exito o no la operacion. Ahora lo que yo hago es:
Código :
// pregunto no es un resource?, o bien no es un RecordSet?
if ( !is_resource( $resource ) ){
$Data = $resource; // retornara su valor como llego
} else{ // si es un resource, o es lo mismo es un recordset
//entonces colocalo en un arreglo
$Data = array( );
while ( $row = @mysql_fetch_array( $resource , MYSQL_ASSOC ) ){
array_push( $Data , $row );
}
}
MySQL_ASSOC, es sencillamente para que use los nombre de los campos y/o alias que colocaste en la consulta, ejemplo:
para una consulta del estilo:
Código :
SELECT Campo1, Campo2 FROM Tabla
getData cuando entra al else, porque es un Recordset, retornará algo como esto:
Código :
array(
Data[0] => array(
['Campo1'] = "Valor 1",
['Campo2'] = "Un valor mas 1",
),
Data[1] => array(
['Campo1'] = "valor 2",
['Campo2'] = "Un valor mas 2",
),
Data[N] => array(
['Campo1'] = "valor N",
['Campo2'] = "Un valor mas N",
)
);
pues sino le colocas el MySQL_ASSOC al mysql_fetch_array, te dara esto:
por ejemplo para Data[0]
Código :
Data[0] => array(
[0]= >"Valor 1",
['Campo1'] = "Valor 1",
[1]= >"Un valor mas 1",
['Campo2'] = "Un valor mas 1"
)
Takashi escribió:
Y porque colocas el $resource = NULL al momento de recibir el parametro???
emm bueno cuando construyes las clases para proyectos "grandes", se usan pruebas unitarias, que prueban las malas invocaciones a los metodos, es decir, alguien pudiera invocar getData sin parametros, y la aplicacion generará un error "fatal" que no deberia ocurrir, al inicializar el parametro con un valor (la razon del NULL) me evito que genere ese error.
Para que lo veas más claro, prueba esto:
Código :
function unaFuncion ( $param = "inicializado"){
return $param;
}
echo unaFuncion(); // imprime inicializado
echo unaFuncion("modificado"); //imprime modificado
Takashi escribió:
fue una sugerencia del proyecto que se colocase el metodo de cerrar la conexion
bueeeeno, si te lo exigen hazlo, pero como digo no es necesario ni recomendado, pues la conexion solo debe permanecer abierta mientras se ejecutan las consultas, no mas de alli. Con ese metodo de cerrar la conexion, a cualquiera se le puede olvidar cerrar la conexion y no seria bueno.
Takashi escribió:
Creen que me haga falta algun metodo?? realmente no creo pero no sepo si haga falta alguno
mmm, bueno la razon del getData es para liberar la memoria de mysql en el caso de que sea un resource, yo tengo un segundo parametro en el metodo sentencias para indicar si se quiere o no liberar el resource, pues cuando es un insert, delete o update no puedes liberar el resultado, pues mysql no almacena eso en memoria. Por supuesto para liberar el resultado lo hago en otro metodo. Aunque como lo veo, lo puedes hacerlo en el mismo metodo sentencias despues de invocar a getData puedes liberar la memoria, pues en mi caso si tuve que hacerlo en otro metodo.
saludos