Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Está correcta esta clase para obtener los datos de configuración?

Estas en el tema de Está correcta esta clase para obtener los datos de configuración? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola soy nuevo en esto del POO. Para empezar lei bastante documentación en la web y hice mi 1º clase para obtener los valores de ...
  #1 (permalink)  
Antiguo 20/06/2006, 09:42
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Está correcta esta clase para obtener los datos de configuración?

Hola soy nuevo en esto del POO.

Para empezar lei bastante documentación en la web y hice mi 1º clase para obtener los valores de configuración del sistema que estan almacenados en MySql en una tabla con 2 campos:

1. variable varchar (20)
2. value varchar (255)

en variable almaceno el nombre de la variable de configuración (ej: idioma)
en value almaceno el valor de la varible anterior (ej: spanish)

Me gustaría que me comentaran y me dieran sus opiniones si es correcta la programación de mi sencilla clase.

Alguna corección, o idea, o mejora?

Código PHP:
<?php

class Zsamer
{

    
//Atributos 
    
var $value_conf
    var 
$Settings_array;


    
//Constructor
    
function Zsamer()
    {
        
$this->get_config_array();     
    }

    
//Metodos
    
function get_config_array()
    { 
        global 
$db;
    
        
$result_config $db->sql_query('SELECT variable,value FROM settings');
        
$Settings_array = array();
    
        while (
$row_config $db->sql_fetchrow($result_config))
        {
            
$Settings_array[$row_config['0']] = $row_config['1'];
        }
        
        
$this->Settings_array$Settings_array;
    }

    function 
get_config_row($value_conf)

    {    
        return 
$this->Settings_array[$value_conf];
    }

}
?>
se utiliza :
Código PHP:
$configure = new Zsamer(); 
$Default_Tema=$configure->get_config_row("skins");
print_r($configure->Settings_array['sitename']);
print(
"<br />");
print (
$configure->get_config_row("adminmail"));
print(
"<br />");
print 
$Default_Tema;
print(
"<br />");
var_dump($Default_Tema); 

Gracias y Saludos
  #2 (permalink)  
Antiguo 20/06/2006, 10:16
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
tenes errores conseptuales en el POO
Código PHP:
class Zsamer 


    
//Atributos  
    
var $value_conf;  //esta variable no seria necesaria ya q no la usas en ninguna parte para almacenarla dentro del obejto
    
var $Settings_array


    
//Constructor 
    
function Zsamer() 
    { 
        
$this->get_config_array();      
    } 

    
//Metodos 
    
function get_config_array() 
    {  
        global 
$db
     
        
$result_config $db->sql_query('SELECT variable,value FROM settings'); 
        [
B]$Settings_array = array();//lo cambiamos por lo de abajo [/B]
     
$arreglo=array();
        while (
$row_config $db->sql_fetchrow($result_config)) 
        { 
            [
B]$Settings_array[$row_config['0']] = $row_config['1'];//lo cambiamos por lo de abajo y los subinidices van sin ''[/B] 
$arreglo  [$row_config[0]] = $row_config[1]     } 
         
        
$this->Settings_array$arreglo
    } 

    function 
get_config_row($value_conf

    {     
        return 
$this->Settings_array[$value_conf]; 
    } 


con una simple mirada rapida me parece q esta bien y deberia funcionar sin problemas
saludos espero te sirva
  #3 (permalink)  
Antiguo 20/06/2006, 12:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
dudas:

porque cambiar?:
Código PHP:
 $Settings_array[$row_config['0']] = $row_config['1'];//lo cambiamos por lo de abajo y los subinidices van sin ''[/b] 
por
Código PHP:
$arreglo[$row_config[0]] = $row_config[1
que significa el ?
Código PHP:
[b
Cuales son mis errores conceptuales para corregirlos?
  #4 (permalink)  
Antiguo 20/06/2006, 14:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ese "[b ]" .. omitelo .. es un tag del foro para indicar "negritas" (cuando se usa entre otro que indica código [php ] ... [/php ] no aplica ..).

El hecho de usar comillas en un indice de un array cuando es numérico siempre y sólo .. en principio no deberías usarlas si sabes que es numérico (no es una cadena para que lo metas entre comillas) .. Pero es cierto que PHP de alguna forma "convirerte" o "entiende" que si bien pusistes esa cadena entre comillas .. al ser su contenido numérico así deberá tratarlo.

(Los errores "conceptuales" .. mejor te lo especifica alguien más versado en POO que yo).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/06/2006, 14:20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias cluster
  #6 (permalink)  
Antiguo 21/06/2006, 15:56
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Cita:
Iniciado por emiliodeg
tenes errores conseptuales en el POO
Código PHP:
class Zsamer 


    
//Atributos  
    
var $value_conf;  //esta variable no seria necesaria ya q no la usas en ninguna parte para almacenarla dentro del obejto
    
var $Settings_array


    
//Constructor 
    
function Zsamer() 
    { 
        
$this->get_config_array();      
    } 

    
//Metodos 
    
function get_config_array() 
    {  
        global 
$db
     
        
$result_config $db->sql_query('SELECT variable,value FROM settings'); 
        [
B]$Settings_array = array();//lo cambiamos por lo de abajo [/B]
     
$arreglo=array();
        while (
$row_config $db->sql_fetchrow($result_config)) 
        { 
            [
B]$Settings_array[$row_config['0']] = $row_config['1'];//lo cambiamos por lo de abajo y los subinidices van sin ''[/B] 
$arreglo  [$row_config[0]] = $row_config[1]     } 
         
        
$this->Settings_array$arreglo
    } 

    function 
get_config_row($value_conf

    {     
        return 
$this->Settings_array[$value_conf]; 
    } 


con una simple mirada rapida me parece q esta bien y deberia funcionar sin problemas
saludos espero te sirva
Cuales son mis errores conceptuales para corregirlos?

gracias.

salu2

zsamer
  #7 (permalink)  
Antiguo 22/06/2006, 07:21
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
zsamer el POO es muy bueno y potente pero solo si hacemos las cosas como se estandarizaron sino seria cualquiera

por ejemplo vos ahi definis una variable $value_conf como var, desde el vamos ya va mal, en POO existe el encapsulamiento, y todos los atributos de una clase (variables) deben ser privadas de la clase para q nadie pueda tocarlas entonces seria algo asi, si qures q se pueda acceder a ellos usar los metodos set y get, en php5 __set y __get

private $value_conf;
private $Settings_array;

el tema es q $value_conf no lo usas nunca! osea, todo atributo definido para una clase debe tener "sentido", p almacenar algo y esta variable la usas como parametro de un metodo (funcion)

constructor, es para crear el objeto y ademas para setear su estado inicial y aca llama a una funcion, en php5 debes usar __construct() y no el nombre de la clase por una cuestion de compatibilidades y facilidades a la hora de herencias y compilacion

los metodos (funciones) estan bien pero de nuevo le falta encapsulamiento, osea private, public o protected

funcionar puede q funcionen las cosas pero solo van a andar "bien" siguiendo los estandares y recomendaciones del lenguaje no solo va a funcionar bien sino tambien en optimas condiciones. muchas veces es un poco tediosa la forma de programar con este paradigma pero a la larga si seguis las reglitas te vas a dar cuenta de q te soluciona muchisimas cosas ;)

busca por internet q hay muchisima info sobre este tema y tambien leete del manual de php (www.php.net) la parte de objetos en php5

saludos espero te sirva
  #8 (permalink)  
Antiguo 22/06/2006, 07:45
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias emiliodeg, me quedó algo más claro.

salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:39.