What is autoload in php? [duplicate]
Asked Answered
H

4

60

what is autoload in PHP?

Haswell answered 31/8, 2010 at 9:6 Comment(1)
Retagged: removed php5.3 tag as this is a php5-specific question.Purgation
J
41

This will be of help to you about usage of autoload. http://ditio.net/2008/11/13/php-autoload-best-practices/

It's a magic function that helps you include / require files using class name.

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT . “/classes/” . $class_name .“.php”;
}

It's deprecated at PHP 7.2.0 and spl_autoload_register is recommended for that purpose.

Jackinthebox answered 31/8, 2010 at 9:10 Comment(2)
The _autoload function as advised in this article should not be used anymore, the spl_autoload_register function is preferred.Interpellant
This link could break, please place the most vital parts of the link inside the answer.Villagomez
M
41

What is autoloading?

Every time you want to use a new class in your PHP project, first you need to include this class (using include or require language construct, that’s right this are not functions). However if you have __autoload function defined, inclusion will handle itself.

include "classes/class.Foo.php";
 
$foo = new Foo;
$foo->start();
$foo->stop();

Basic Autoloading Example

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT."classes/class.".$class_name.".php";
}
 
$foo = new Foo;
$foo->start();
$foo->stop();

PHP Official

Other

Update

PHP 5 introduced the magic function __autoload() which is automatically called when your code references a class or interface that hasn’t been loaded yet.

The major drawback to the __autoload() function is that you can only provide one autoloader with it. PHP 5.1.2 introduced spl_autoload() which allows you to register multiple autoloader functions, and in the future the __autoload() function will be deprecated.

The introduction of spl_autoload_register() gave programmers the ability to create an autoload chain, a series of functions that can be called to try and load a class or interface. For example:

<?php
function autoloadModel($className) {
    $filename = "models/" . $className . ".php";
    if (is_readable($filename)) {
        require $filename;
    }
}

function autoloadController($className) {
    $filename = "controllers/" . $className . ".php";
    if (is_readable($filename)) {
        require $filename;
    }
}

spl_autoload_register("autoloadModel");
spl_autoload_register("autoloadController");
Mal answered 14/1, 2016 at 19:59 Comment(1)
Please don't use __autoload(). It's better to use spl_autoload_registerSchoof
W
30

Here is the official documentation: https://www.php.net/manual/en/language.oop5.autoload.php

In short, it just allows you to define search paths for classes so you wouldn't be required to include the files containing them manually.

I suggest you should develop a habit of searching php.net by just appending function names or obvious keywords to the address. That's how I found php.net/autoload. It's quite convenient like that.

Walrath answered 31/8, 2010 at 9:7 Comment(3)
Also see: phpbestpractices.org/#auto-loadingIndubitability
Some php concepts are better explained by other users than php documentation. By providing a link to explanation on SO defeats its purpose.Brewage
@TadasV. Agreed, not just some, but A LOT of them.Ranchman
E
1
an __autoload() 

//function which is automatically called in case you are trying to use     
//a class/interface which hasn't been defined yet.

function __autoload($class_name) {
    include $class_name . '.php';
}
Exhibitionism answered 14/4, 2017 at 0:11 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.