<?php
/*********************************************************************************************
** Autor : Andrés DarÃo Gutiérrez Poveda. **
** Fecha : Abril 27 de 2004. **
** Versión : 0.1.a. **
** Empresa : Atila Servicios S.A. **
** **
**********************************************************************************************
** Proposito: **
** **
** Esta clase se ocupa de generar los objetos de las tablas de una base de datos MySQL. **
** **
**********************************************************************************************
** Version 0.2 - Agosto 31 de 2004 **
** Cambios para la versión 0.2 **
** **
** - Se generan las clases con comentarios para realizar documentación con doxygen o **
** javadoc. **
** - Mas facil de personalizar. **
*********************************************************************************************/
class objectgenerator{
/*******************************************************************************************
** ATRIBUTOS **
*******************************************************************************************/
var $empresa;
var $autor;
var $email;
/*******************************************************************************************
** MÃTODOS **
*******************************************************************************************/
/*****************************************************************************
** NOMBRE: **
** **
** SET y GET para el atributo empresa. **
** **
******************************************************************************
** OBJETIVO: **
** **
** Métodos utilizados para ajustar y obtener el valor del atributo. **
** **
******************************************************************************
** ARGUMENTOS: **
** **
** - value: Valor a asignar. **
*****************************************************************************/
function get_empresa(){
return $this->empresa;
}
function set_empresa($nombre){
$this->empresa = $nombre;
}
/*****************************************************************************
** NOMBRE: **
** **
** SET y GET para el atributo autor. **
** **
******************************************************************************
** OBJETIVO: **
** **
** Métodos utilizados para ajustar y obtener el valor del atributo. **
** **
******************************************************************************
** ARGUMENTOS: **
** **
** - value: Valor a asignar. **
*****************************************************************************/
function get_autor(){
return $this->autor;
}
function set_autor($nombre){
$this->autor = $nombre;
}
/*****************************************************************************
** NOMBRE: **
** **
** SET y GET para el atributo email. **
** **
******************************************************************************
** OBJETIVO: **
** **
** Métodos utilizados para ajustar y obtener el valor del atributo. **
** **
******************************************************************************
** ARGUMENTOS: **
** **
** - value: Valor a asignar. **
*****************************************************************************/
function get_email(){
return $this->email;
}
function set_email($nombre){
$this->email = $nombre;
}
/*****************************************************************************
** NOMBRE: **
** **
** generar ($mysql,$path) **
** **
******************************************************************************
** OBJETIVO: **
** **
** Generar el objeto con sus variables privadas y los métodos SET y GET de **
** cada una. **
** **
******************************************************************************
** ARGUMENTOS: **
** **
** - mysql: Objeto de tipo MySQL. **
** - tabla: Nombre de la tabla a la cual se le generará el objeto. **
** - path: Dirección y nombre del objeto generar. **
** Ej. /root/objetos/obj.class.php . Asegurese de que tiene los **
** permisos de escritura en dicho directorio. **
*****************************************************************************/
function genereobjeto($mysql,$tabla,$path){
$fp = fopen($path,"w");
if (!$fp) {
$feeback = "El Archivo de movimientos no se pudo abrir!. ";
}else{
$campos = "";
$date = new Date();
$fecha = $date->fechaactual();
$objeto = "<?php\n";
$objeto .= "/*********************************************************************************************\n";
$objeto .= "** Autor : ".$this->autor." <".$this->email.">. **\n";
$objeto .= "** Fecha : ".$date->fechaaletras($fecha).". **\n";
$objeto .= "** Versión : 1.0.0. **\n";
$objeto .= "** Empresa : ".$this->empresa." **\n";
$objeto .= "** **\n";
$objeto .= "**********************************************************************************************\n";
$objeto .= "** Proposito: **\n";
$objeto .= "** **\n";
$objeto .= "** Esta clase se encarga de manejar todas las operaciones del objeto ".$tabla.". **\n";
$objeto .= "** **\n";
$objeto .= "**********************************************************************************************\n";
$objeto .= "** Version 1.0.0 - ".$date->fechaaletras($fecha)." **\n";
$objeto .= "** Cambio para la versión 1.0.0 **\n";
$objeto .= "** **\n";
$objeto .= "** - Objeto generado por el generador automático v0.2.a. **\n";
$objeto .= "*********************************************************************************************/\n\n";
$objeto .= "/**\n";
$objeto .= "* Esta clase se encarga de manejar todas las operaciones del objeto ".$tabla.".\n";
$objeto .= "* @author ".$this->autor." <".$this->email.">.\n";
$objeto .= "* @date ".$date->fechaaletras($fecha).".\n";
$objeto .= "* @version 1.0.0\n";
$objeto .= "*/\n";
$objeto .= "class ".$tabla."{\n\n";
$objeto .= " /*******************************************************************************************\n";
$objeto .= " ** ATRIBUTOS **\n";
$objeto .= " *******************************************************************************************/\n";
$objdb = $mysql->get_mysql_db();
$objlink = $mysql->get_mysql_link();
$camposA = mysql_list_fields($objdb,$tabla,$objlink);
$columns = mysql_num_fields($camposA);
for ($i = 0; $i < $columns; $i++) {
$campo = mysql_field_name($camposA,$i);
$campos .= ",".$campo;
$objeto .= " /** Descripción variable*/";
$objeto .= " var $".$campo.";\n";
}
$campos = substr($campos,1);
$objeto .= "\n";
$objeto .= " /*******************************************************************************************\n";
$objeto .= " ** MÃTODOS **\n";
$objeto .= " *******************************************************************************************/\n";
for ($i = 0; $i < $columns; $i++) {
$campo = mysql_field_name($camposA,$i);
$objeto .= " /*****************************************************************************\n";
$objeto .= " ** NOMBRE: **\n";
$objeto .= " ** **\n";
$objeto .= " ** SET y GET para el atributo ".$campo.". **\n";
$objeto .= " ** **\n";
$objeto .= " ******************************************************************************\n";
$objeto .= " ** OBJETIVO: **\n";
$objeto .= " ** **\n";
$objeto .= " ** Métodos utilizados para ajustar y obtener el valor del atributo. **\n";
$objeto .= " ** **\n";
$objeto .= " ******************************************************************************\n";
$objeto .= " ** ARGUMENTOS: **\n";
$objeto .= " ** **\n";
$objeto .= " ** - value: Valor a asignar. **\n";
$objeto .= " *****************************************************************************/\n";
$objeto .= " /**\n";
$objeto .= " * Obtiene el valor del atributo ".$campo.".\n";
$objeto .= " *\n";
$objeto .= " * @pre\n";
$objeto .= " * @post\n";
$objeto .= " * @return ".$campo." => Descripción variable.\n";
$objeto .= " */\n";
$objeto .= " function get_".$campo."(){\n";
$objeto .= " return $"."this->".$campo.";\n";
$objeto .= " }\n\n";
$objeto .= " /**\n";
$objeto .= " * Le da el valor al atributo ".$campo.".\n";
$objeto .= " *\n";
$objeto .= " * @pre\n";
$objeto .= " * @post El atributo tiene el valor de value.\n";
$objeto .= " * @param value => Valor a asignar.\n";
$objeto .= " */\n";
$objeto .= " function set_".$campo."($"."value){\n";
$objeto .= " $"."this->".$campo." = $"."value;\n";
$objeto .= " }\n\n\n";
}
$objeto .= " /*****************************************************************************\n";
$objeto .= " ** NOMBRE: **\n";
$objeto .= " ** **\n";
$objeto .= " ** get_".$tabla." ($"."id). **\n";
$objeto .= " ** **\n";
$objeto .= " ******************************************************************************\n";
$objeto .= " ** OBJETIVO: **\n";
$objeto .= " ** **\n";
$objeto .= " ** Obtener datos de la base de datos. **\n";
$objeto .= " ** **\n";
$objeto .= " ******************************************************************************\n";
$objeto .= " ** ARGUMENTOS: **\n";
$objeto .= " ** **\n";
$objeto .= " ** - id: Identificador único del objeto. **\n";
$objeto .= " *****************************************************************************/\n";
$objeto .= " /**\n";
$objeto .= " * Llena el objeto con los datos de la base de datos.\n";
$objeto .= " *\n";
$objeto .= " * @pre id debe existir.\n";
$objeto .= " * @post Los atributos tienen los datos de la base de datos.\n";
$objeto .= " * @param id => Identificador único.\n";
$objeto .= " */\n";
$objeto .= " function get_".$tabla."($"."id){\n";
$objeto .= " $"."info['tabla'] = '".$tabla."';\n";
$objeto .= " $"."info['campos'] = '".$campos."';\n";
$objeto .= " $"."info['movimientoid'] = 6;\n";
$objeto .= " $"."info['usuarioid'] = 0;\n";
$objeto .= " $"."info['sql'] = \"SELECT \".$"."info['campos'].\" FROM \".$"."info['tabla'].\" WHERE id = \".$"."id;\n";
$objeto .= " $"."result = $"."this->mysql->ejecutarsql($"."info);\n";
$objeto .= " $"."row = mysql_fetch_array($"."result);\n";
for ($i = 0; $i < $columns; $i++) {
$campo = mysql_field_name($camposA,$i);
$objeto .= " $"."this->".$campo." = $"."row['".$campo."'];\n";
}
$objeto .= " }\n";
$objeto .= "}\n";
$objeto .= "?>";
fputs($fp,$objeto);
fclose($fp);
}
}
/*****************************************************************************
** NOMBRE: **
** **
** generar ($mysql,$path) **
** **
******************************************************************************
** OBJETIVO: **
** **
** Obtener el nombre de todas las tablas de la base de datos y mandar a **
** generar los objetos de cada una. **
** **
******************************************************************************
** ARGUMENTOS: **
** **
** - mysql: Objeto de tipo MySQL. **
** - path: Dirección donde deben quedar los objetos generados. **
** Ej. /root/objetos , notese que no debe de terminar con /. **
*****************************************************************************/
function generar($mysql,$path){
$objdb = $mysql->get_mysql_db();
$result = @mysql_list_tables($objdb);
while ($row = mysql_fetch_row($result)) {
$pathf = $path."/".$row[0].".class.php";
$this->genereobjeto($mysql,$row[0],$pathf);
}
}
}
?>