Buena Práctica para una clase propia de uso general

12 views
Skip to first unread message

Carlos Beltran

unread,
Mar 11, 2010, 10:27:16 AM3/11/10
to KumbiaPHP Framework
Compañeros buenos días.

Debo crear una clase que contendrá funciones de utilidad genérica,
tales como getDigitoverificacion($nit) que calcula el dígito de
verificación a partir de un NIT colombiano y bueno irán apareciendo
otras de utilidad general. ¿Que buena práctica me sugieren respecto a
en que directorio la debo ubicar para que sea instanciada desde
cualquier controlador?.

Gracias de antemano.

Nota. Estoy trabajando con Spirit beta 2.

José Alberto

unread,
Mar 11, 2010, 10:33:39 AM3/11/10
to kum...@googlegroups.com
yo haría una clase utilidades con métodos static de tal forma que en la carpeta /app/libs/utilidades.php podría usarla en cualquier sitio haciendo un Utilidades::getDigitoVerificacion($nit);


--
Viva KumbiaPHP Framework!
 http://www.kumbiaphp.com/
 Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
 Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.

Deivinson Tejeda

unread,
Mar 11, 2010, 10:33:42 AM3/11/10
to kum...@googlegroups.com
Buenas Carlos, 

Eso que comentas puede ser una librería, pero si das mas detalle puede que te cambie de opinión y sea un Modelo, porque eso que dices q hará esa clase puede estar de alguna manera asociada a lógica, pero como te digo seria cuestión de saber mas... En principio como librería va bien (limitándome solo a lo dijiste)...

Éxitos!

2010/3/11 Carlos Beltran <carlos.beltr...@gmail.com>
--
Viva KumbiaPHP Framework!
 http://www.kumbiaphp.com/
 Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
 Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.



--
Deivinson Tejeda (CaChi)
KumbiaPHP Framework Developer
http://www.kumbiaphp.com

Twitter @DeivinsonTejeda

Deivinson Tejeda

unread,
Mar 11, 2010, 10:40:24 AM3/11/10
to kum...@googlegroups.com
Olvide decirte lo que te ha explicado José para esas clases lo ideal es que sean de acceso estáticos...

Éxitos!

2010/3/11 José Alberto <unjose...@gmail.com>

Carlos Beltran

unread,
Mar 11, 2010, 11:27:07 AM3/11/10
to kum...@googlegroups.com
José Alberto y Deivinson

Muy amables por sus valiosas respuestas. En efecto en /app/libs cree la clase Utilidad con la public static function GetDigitoVerificacion($pnit) y desde un controlador la invoque con Utilidad::GetDigitoVerificacion($nit) y todo perfecto. Me continúo volviendo fanático de Kumbia.
Ahora ¿Que parte del código Kumbia instancia la clase?

Nota. Inicialmente traté de instanciar en el controlador un objeto con new Utilidad(); y por supuesto no es necesario.

Deivinson Tejeda

unread,
Mar 11, 2010, 12:22:40 PM3/11/10
to kum...@googlegroups.com
Carlos las clases con métodos estáticos no necesitan ser instanciados eso es Programacion Orientada a Objetos...

Éxitos!

2010/3/11 Carlos Beltran <carlos.beltr...@gmail.com>
José Alberto y Deivinson

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.

José Alberto

unread,
Mar 11, 2010, 1:35:44 PM3/11/10
to kum...@googlegroups.com
Carlos, si lo que quieres saber es porque puedes usar tu clase tan alegremente es por esto: core/kumbia/bootstrap.php

[...]
// Registrar la autocarga
spl_autoload_register('auto');
[...]

// Autocarga de clases
function auto($class)
    {
            $class = Util::smallcase($class);
            
            if (is_file(APP_PATH . "extensions/helpers/$class.php")) {
                return require APP_PATH . "extensions/helpers/$class.php";
            }
            if (is_file(CORE_PATH . "extensions/helpers/$class.php")) {
                return require CORE_PATH . "extensions/helpers/$class.php";
            }
            if (is_file(APP_PATH . "libs/$class.php")) {
                    return require APP_PATH . "libs/$class.php";
            }
            if (! include CORE_PATH . "libs/$class/$class.php") {
                throw new KumbiaException("La clase $class no se ha podido cargar");
            }
    }
[...]

Así todas las clases que usas si las guardas en /app/libs/ no tendrás problemas.

Carlos Beltran

unread,
Mar 11, 2010, 6:32:16 PM3/11/10
to kum...@googlegroups.com
José Alberto y Deivinson

Nuevamente gracias por su valiosa guía y me encanta cerrar este hilo con la solución efectiva a mi necesidad inicial.
Adelante van ustedes por muy buen camino.

Reply all
Reply to author
Forward
0 new messages