| CGI-Lazy documentation | Contained in the CGI-Lazy distribution. |
#===========================================================================
Copyright (C) 2008 by Nik Ogura. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Bug reports and comments to nik.ogura@gmail.com.
#===========================================================================
CGI::Lazy::Config
use CGI::Lazy;
my $q = CGI::Lazy->new('/path/to/config/file');
my $c = $q->config;
my $prop = $c->property1; #getter
$c->property1('foo'); #setter
Internal module used for parsing config file and getting/ setting values from same.
Configuration values are accessed by calling the property name on the config object without arguments.
The same method doubles as a setter if called with arguments.
Returns the name of the config file the object is based on
Static accessor method. Use in places where autoloading isn't appropriate. e.g $q->widget->"somestring".$variable or some such nonsense.
name of the property to retrieve
Constructor. Creates and returns the config object.
CGI::Lazy object.
Hashref containing initialization variables, or absolute path to config file.
CGI::Lazy::Config uses an autoloader to get and set its properties. You can access any property by calling $q->config->var where var is the name of the property.
Static property setter. For use when autoloading isn't possible.
Name of property
Value of property
| CGI-Lazy documentation | Contained in the CGI-Lazy distribution. |
package CGI::Lazy::Config; use strict; use JSON; use Carp; use CGI::Lazy::Globals; #------------------------------------------------------------------------------- sub AUTOLOAD { my $self = shift; my $name = our $AUTOLOAD; return if $name =~ /::DESTROY$/; my @list = split "::", $name; my $value = pop @list; if (@_) { return $self->{_config}->{$value} = shift; } else { return $self->{_config}->{$value}; } } #------------------------------------------------------------------------------- sub configfile { my $self = shift; return $self->{_configfile}; } #------------------------------------------------------------------------------- sub get { my $self = shift; my $prop = shift; return $self->{_config}{$prop}; } #------------------------------------------------------------------------------- sub new { my $class = shift; my $q = shift; my $filename = shift; my $json; my $conf; if (ref $filename) { $conf = $filename; } else { eval { open IF, "< $CONFIGROOT/$filename" or croak $!; while (<IF>) { $json .= $_ unless ($_ =~ /^\s*#/); } close IF; }; if ($@) { $q->errorHandler->noConfig($filename); } eval { $conf = from_json($json); }; if ($@) { $q->errorHandler->badConfig($filename); } } my $self = {_q => $q, _config =>$conf, _configfile => $filename}; bless $self, $class; return $self; } #------------------------------------------------------------------------------- sub set { my $self = shift; my $name = shift; my $value = shift; $self->{_config}{$name} = $value; } 1 __END__