Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Mike Naberezny's Blog:
__get() - an alternative to __autoload()
Jan 09, 2008 @ 06:47:54

Mike Naberezny has posted this new item on his blog today with a look at why __get() is a perfectly good alternative to __autoload() in a class structure.

__autoload() is a magic function introduced in PHP 5 that provides a mechanism for on-demand loading of classes. After its inclusion in PHP, many argued that using such a feature is too magical or not a good design practice. Putting the religious debates over the appropriateness of __autoload() aside, its implementation does have one significant drawback: it is a function declared in the global scope. Once a function is declared, it cannot be redeclared. This means __autoload() can't be used effectively in shared libraries, since any other code could have already declared it.

Similar lazy-load functionality can be achieved on the class level by using __get().

He gives a short code example where the __get() call mimics the functionality of __autoload(), but the resulting object created is public, not global...

tagged: __get __autoload alternative global versus public __get __autoload alternative global versus public

Link:

Mike Naberezny's Blog:
__get() - an alternative to __autoload()
Jan 09, 2008 @ 06:47:54

Mike Naberezny has posted this new item on his blog today with a look at why __get() is a perfectly good alternative to __autoload() in a class structure.

__autoload() is a magic function introduced in PHP 5 that provides a mechanism for on-demand loading of classes. After its inclusion in PHP, many argued that using such a feature is too magical or not a good design practice. Putting the religious debates over the appropriateness of __autoload() aside, its implementation does have one significant drawback: it is a function declared in the global scope. Once a function is declared, it cannot be redeclared. This means __autoload() can't be used effectively in shared libraries, since any other code could have already declared it.

Similar lazy-load functionality can be achieved on the class level by using __get().

He gives a short code example where the __get() call mimics the functionality of __autoload(), but the resulting object created is public, not global...

tagged: __get __autoload alternative global versus public __get __autoload alternative global versus public

Link:

SitePoint PHP Blog:
SmartLoader Reloaded
Apr 07, 2006 @ 08:36:43

When he wrote this previous post on __autoloading classes, he didn't know he'd get as large of a response as he did. So, based on that, he decided to post a follow-up with a new version and some improvements.

The enhancements include: the addition of directory scanning for the files, using the SPL RecursiveDirectoryIterator for scanning, and Windows support (via the DIRECTORY_SEPARATOR constant).

The post also includes a note on the backwards compatibility (fine except for an issues with a preg_match_all) and a quick example of how to use it.

tagged: smartloader reloaded __autoload new version smartloader reloaded __autoload new version

Link:

SitePoint PHP Blog:
SmartLoader Reloaded
Apr 07, 2006 @ 08:36:43

When he wrote this previous post on __autoloading classes, he didn't know he'd get as large of a response as he did. So, based on that, he decided to post a follow-up with a new version and some improvements.

The enhancements include: the addition of directory scanning for the files, using the SPL RecursiveDirectoryIterator for scanning, and Windows support (via the DIRECTORY_SEPARATOR constant).

The post also includes a note on the backwards compatibility (fine except for an issues with a preg_match_all) and a quick example of how to use it.

tagged: smartloader reloaded __autoload new version smartloader reloaded __autoload new version

Link: