• Publicidad

Generar atributos de clase dinámicamente

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Generar atributos de clase dinámicamente

Notapor danimera » 2012-05-15 10:08 @464

No sé si lo pueda llamar así...
:? no quiero usar Moose ni DBIx-Class.

La idea es que hice un ORM sencillo en Perl, pero quiero que mi módulo genere desde mi modelo de la base de datos
Ej.:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package MyApp::Model::Cliente
  2. use base "MyApp::Model";
  3.  
  4. @campos = qw(id nombre cedula);
  5.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Luego de procesos internos, Perl me genere automáticamente la estructura para que yo pueda obtener los valores de esta forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $cliente = MyApp::Model::Cliente;
  2. #supongamos que obtengo el cliente
  3.  
  4. $cliente->obtener($id);
  5.  
  6. #y quiero llamar los valores así
  7.  
  8. print $cliente->nombre;
  9. print $cliente->cedula;
  10.  
  11. # no sé si en el caso anterior son métodos, o qué...
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La idea es esa. No sé si me hice entender. Vi algo por ahí en un módulo que era un procedimiento llamado sub AUTOLOAD, pero no sé, o cómo podría hacerlo.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Re: Generar atributos de clase dinámicamente

Notapor explorer » 2012-05-15 11:56 @539

Eso lo puedes conseguir con alguno de los varios ORM que hay por CPAN, como ORM, Class::DBI::Lite, DBI::Easy o, quizás, el sencillo Jorge.

De este último, mira lo que pone en su descripción:
¿Aún no estás preparado para Class::DBI o DBIx::Class? ¿Desencantado con Tangram? ¿Todavía escribiendo tu propio SQL?

Entonces, sacarás ventaja con Jorge.


En cuanto al AUTOLOAD, se trata de la subrutina/método que Perl llama dentro de la clase de un objeto, cuando hacemos referencia a una subrutina/método que no ha encontrado a lo largo del módulo. Entonces, dentro de AUTOLOAD podemos gestionar esa llamada, o definir completamente un método que la gestione.

Es decir: podemos gestionar cualquier llamada de cualquier método a nuestro objeto, y/o crear métodos nuevos a partir de esas llamadas.

Más información en tu propio ordenador en perldoc perlsub, y en la Web, en la sección Autoloading.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar atributos de clase dinámicamente

Notapor danimera » 2012-05-15 14:01 @626

Precisamente estaba mirando Jorge pero qué pasó con Jorge que y todo esos módulos
me podía servir alguno, usa Moose, y yo no quiero nada así.

ORM, Class::DBI::Lite, DBI::Easy... geniales todos fantásticos, pero necesitaba que me funcionara con CSV a menos que yo pueda hacer el conector para CSV de esos módulos sería genial, ya que tengo problemas con el autoincrement en los CSV...

La cuestión es que veo que al parecer con AUTOLOAD podría lograr lo que quiero... Pero antes descartarme si alguno usa Moose ya que esto vara para un hosting convencional para unas páginas web... y si alguno funcionaría con CSV.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Generar atributos de clase dinámicamente

Notapor explorer » 2012-05-15 16:01 @709

¿Dónde dice que Jorge depende de Moose?

Y en un alojamiento de verdad, se usaría una base de datos SQL, no un archivo CSV.

Pues sí, tendrás que trabajar un rato...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar atributos de clase dinámicamente

Notapor danimera » 2012-05-15 16:06 @712

Yo me refería a los otros. Jorge me pareció bueno, solo que me toca CSV. Igual ya mi ORM está casi listo...

En todo caso estudiaré más a fondo. Gracias, explorer.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 15 invitados