NYCPHP Meetup

[nycphp-talk] php autoloading

Paul M Jones pmjones88 at gmail.com
Fri Jan 16 12:06:16 EST 2009


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/







More information about the talk mailing list