Many developers writing object-oriented applications create one PHP source file per-class definition. One of the biggest annoyances is having to write a long list of needed includes at the beginning of each script (one for each class).
In PHP 5, this is no longer necessary. You may define an __autoload function which is automatically called in case you are trying to use a class/interface which hasn’t been defined yet.
This is how it works in action. We will create two classes. So create Image.php file and paste this in:
4 | function __construct() { |
5 | echo 'Class Image loaded successfully <br />' ; |
Now create Test.php file and paste this in:
4 | function __construct() { |
5 | echo 'Class Test working <br />' ; |
Basically, we created 2 simple classes with constructors which echo some text out. Now, create a file index.php and paste this in:
2 | function __autoload( $class_name ) { |
3 | require_once $class_name . '.php' ; |
When you run index.php in browser, everything is working fine (assuming all 3 files are in the same folder). Maybe you don’t see a point, but imagine that you have 10 or more classes and have to write require_once as many times.
I will show you how to properly throw exception if you are using PHP 5.3 and above. Chane your index.php to look like this:
02 | function __autoload( $class_name ) { |
03 | if ( file_exists ( $class_name . '.php' )) { |
04 | require_once ( $class_name . '.php' ); |
06 | throw new Exception( "Unable to load $class_name." ); |
13 | } catch (Exception $e ) { |
14 | echo $e ->getMessage(), "\n" ; |
Now, it checks if file exists and throws a proper Exception if it doesn’t.
No comments:
Post a Comment
comment here