On Jan 12, 2009, at 11:13 , Paul A Houle wrote:
I've recently written a "framework" that's part of a planned
software product line. One of the consequences is that I've written
command-line PHP scripts that need to deal with objects that didn't
exist when the script was written, so I needed an autoloader.
I did some research and I was really impressed with A.J. Brown's
dynamic autoloader:
http://ajbrown.org/blog/2008/12/02/an-auto-loader-using-php-tokenizer.html
Rather than assuming a certain convention for how file names
relate to class names, it scans directory trees, parses files and
creates a mapping. This adds some overhead, but that can be
reduced by using serialize() to cache the result. I've written some
thought about this up:
http://gen5.info/q/2009/01/09/an-awesome-autoloader-for-php/
Any thoughts?
At the risk of sounding flippant, you could "[assume] a certain
convention for how file names relate to class names" and use six lines
of code for autoloading. The PEAR naming convention is perfect for
this. Underscores in class names map to subdirectories, so the
transformation of class name to file path is trivial.
spl_autoload_register('houle_autoload');
function houle_autoload($class)
{
$file = str_replace('_', '/', $class) . '.php';
return $file;
}
As a bonus, you then have a standard organizational structure for
classes that works for everything everywhere the same way every time.
--
Paul M. Jones
http://paul-m-jones.com/
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php