Home  >  Article  >  Backend Development  >  php automatically load objects

php automatically load objects

伊谢尔伦
伊谢尔伦Original
2016-11-23 14:20:141206browse

Many developers create a PHP source file for each class definition when writing object-oriented applications. A big annoyance is having to write a long list of include files (one file per class) at the beginning of each script.

In PHP 5, this is no longer necessary. You can define an __autoload() function that will be automatically called when trying to use a class that has not yet been defined. By calling this function, the scripting engine has a last chance to load the required classes before PHP fails with an error.

Tip

spl_autoload_register() provides a more flexible way to implement automatic loading of classes. Therefore, use of the __autoload() function is no longer recommended and may be deprecated in a future version.

Note:

Before version 5.3.0, exceptions thrown by the __autoload function cannot be caught by the catch statement block and will result in a fatal error. From 5.3.0+ onwards, exceptions thrown by the __autoload function can be caught by the catch statement block, but they need to follow a condition. If a custom exception is thrown, a corresponding custom exception class must exist. The __autoload function can automatically load custom exception classes recursively.

Note:

Autoloading is not available in PHP’s CLI interactive mode.

Example #1 Automatic loading example

This example attempts to load MyClass1 and MyClass2 from the MyClass1.php and MyClass2.php files respectively:

function __autoload($class_name){
require_once $class_name.'.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();

Note: MyClass1.php and MyClass2.php need to be in the same directory as the current script to load. Go to

Example #2 Another example

This example attempts to load the interface ITest:

function __autoload($name) {
   var_dump($name);
}
class Foo implements ITest {
}
/*
string(5) "ITest"
Fatal error: Interface 'ITest' not found in ...
*/

Example #3 Automatically load exception handling in PHP 5.3.0+

This example throws an exception and uses it in the try/catch statement Demonstration in block.

function __autoload($name) {
   echo "Want to load $name.\n";
   throw new Exception("Unable to load $name.");
}
try {
   $obj = new NonLoadableClass();
} catch (Exception $e) {
   echo $e->getMessage(), "\n";
}

The above routine will output:

Want to load NonLoadableClass.
Unable to load NonLoadableClass.

Example #4 Automatic loading exception handling in PHP 5.3.0+ - no custom exception mechanism

This example will An exception was thrown to a custom exception handler that does not exist.

The above routine will output:

Want to load NonLoadableClass.
Want to load MissingException.

Fatal error: Class 'MissingException' not found in testMissingException.php on line 4


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn