Home >Backend Development >PHP Tutorial >Usage of spl_autoload_register function in PHP, splautoload_PHP tutorial

Usage of spl_autoload_register function in PHP, splautoload_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:56:18963browse

Usage of spl_autoload_register function in PHP, splautoload

spl_autoload_register
(PHP 5 >= 5.1.2) spl_autoload_register — Register the __autoload() function Description
bool spl_autoload_register ([ callback $autoload_function ] )
Register the function into the SPL __autoload function stack. Activate functions in this stack if they are not already active. If the __autoload function has been implemented in your program, it must be explicitly registered in the __autoload stack. because The spl_autoload_register() function will replace the __autoload function in Zend Engine with spl_autoload() or spl_autoload_call(). Parameters autoload_function
The autoload function to be registered. If no parameters are provided, the default implementation function of autoload is automatically registered. spl_autoload(). Return Value
Returns TRUE if successful, FALSE if failed. Note: SPL is Standard PHP Abbreviation for Library (standard PHP library). It is an extension library introduced in PHP5. Its main functions include the implementation of the autoload mechanism and various Iterator interfaces or classes. SPL The implementation of the autoload mechanism is achieved by pointing the function pointer autoload_func to the function with the autoloading function implemented by oneself. SPL has two different functions spl_autoload, spl_autoload_call implements different automatic loading mechanisms by pointing autoload_func to these two different function addresses. Example

Suppose we have a class file A.php, which defines a class named A:

view plaincopy to clipboardprint?
class A
{
public function __construct()
{
echo 'Got it.';
}

Then we have an index.php that needs to use this class A. The conventional writing method is

view plaincopy to clipboardprint?

require('A.php');
$a = new A();

But one problem is that if our index.php needs to contain not just class A, but many classes, then we have to write many lines of require statements, which sometimes makes people feel uncomfortable. .

But in versions after php5, we no longer need to do this. In php5, the __autoload function is automatically called when trying to use a class that has not been defined, so we can write the __autoload function to let php automatically load the class without having to write a long list of include files.

For example, in the above example, index.php can be written like this:

view plaincopy to clipboardprint?

function __autoload($class)
{
$file = $class . '.php';
if (is_file($ file)) {
require_once($file);
}
}

$a = new A();

Of course, the above is just the simplest demonstration. __autoload just goes to include_path to find the class file and loads it. We can define the rules for __autoload to load classes according to our own needs.

In addition, if we don’t want to call __autoload when automatically loading, but call our own function (or class method), we can use spl_autoload_register to register our own autoload function. Its function prototype is as follows:

bool spl_autoload_register ( [callback $autoload_function] )

Let’s continue to rewrite the above example:

view plaincopy to clipboardprint?

function loader($class)
{
$file = $class . '.php';
if (is_file($ file)) {
require_once($file);
}
}

spl_autoload_register('loader');

$a = new A();

This can also run normally. At this time, when PHP is looking for a class, it does not call __autoload but calls our own defined function loader. For the same reason, the following writing method is also possible:

view plaincopy to clipboardprint?

class Loader
{
public static function loadClass($class)
{
$file = $class . '. php';
if (is_file($file)) {
require_once($file);
}
}
}

spl_autoload_register(array('Loader', 'loadClass'));

$a = new A();

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/988859.htmlTechArticleUsage of spl_autoload_register function in PHP, spl_autoload_register (PHP 5 = 5.1.2) spl_autoload_register register __autoload() function Description bool spl_autoload_register ([ ca...
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