Re: How to store data that doesn't change?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2010-09-18 at 12:21 -0400, chris h wrote:

> When you really NEED a global resource I'm a fan of a registry class.  It's
> a little slower but not noticeable in most cases.
> 
> With a registry you can store all global data in a single, controlled area.
>  You can also store arrays and resources instead of just strings.  One down
> side to most registry classes is that it's not truly "constant" data, but
> with magic methods you can correct that.
> 
> 
> In this class you can store values globally, and once they are set they
> can't be easily changed.
> 
> myRegistry::get()->test = array('abc','xyz');
> myRegistry::get()->test = 1234;
> 
> echo myRegistry::get()->test[1];  // should echo 'xyz'
> 
> 
> I just typed this up real quick so there may be errors; but if you want to
> try it, it should at least give you the just of it.
> -------------untested code----------------
> class myRegistry {
> 
> private $_Data = array();
> 
> static private $_Object = null;
> 
> 
> static public function get () {
> 
>   if( !( self::$_Object instanceof self ))
>     self::$_Object = new self();
> 
>   return self::$_Object;
> 
> }
> 
> 
> private function __construct () { }
> 
> 
> public function __get ($name) {
> 
>   if (isset( $this->_Data[$name] ))
>     return $this->_Data[$name];
> 
>   return null;
> 
> }
> 
> 
> public function __set ($name, $value) {
> 
>   if (isset( $this->_Data[$name] ))
>     return false;
> 
>   return $this->_Data[$name] = $value;
> 
> }
> 
> }
> ------------------
> 
> On Thu, Sep 16, 2010 at 10:50 AM, tedd <tedd.sperling@xxxxxxxxx> wrote:
> 
> > At 8:46 AM -0400 9/15/10, Peter van der Does wrote:
> >
> >> Hi,
> >>
> >> How do you people store data that doesn't change, an example of this
> >> would be the version number of your software. You might want to use it
> >> through out your program but how to you store it?
> >>
> >> As far as I can see there are several options to use this data.
> >> 1. Global Variable
> >> 2. Store it in a registry class
> >> 3. Store it in a named constant.
> >> 4. Use a function that will return the data (kind of like a regsitry
> >> class but it's not a class)
> >>
> >> Personally I don't like option 1 but what about the other options. Is
> >> any of them faster then the others. What other pros and cons are there.
> >>
> >
> > Make it's a Constant -- it's simply a Global that doesn't change.
> >
> > I typically hold such things in a global configuration file that can be
> > included when needed.
> >
> > Cheers,
> >
> > tedd
> >
> > --
> > -------
> > http://sperling.com/
> >
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >



You might want to add in some error returns from the setters instead of
just false, as attempting to overwrite a real constant would issue a
notice.

Thanks,
Ash
http://www.ashleysheridan.co.uk



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux