__autoload magic function can also be used inside a class and have the class handle the inclusion of class files.
/********
index.php
********/
<?php
class foobar {
public function executeMe(){
function __autoload($classname){
include $classname . '.php';
}
}
}
$foo = new foobar();
$foo->executeMe();
some::foobar2(); //will output "hello! I'm static!"
$bar = new some();
$bar->foobar(); //will output "hello! I'm public!"
?>
/********
some.php
********/
<?php
class some {
public function foobar (){
echo "hello! I'm public!";
}
static function foobar2 (){
echo "hello! I'm static!";
}
}
?>
__autoload
(No hay información de versión disponible, podría estar únicamente en SVN)
__autoload — Intenta cargar una clase sin definir
Descripción
void __autoload
( string
$class
)Puede definir esta función para habilitar lacarga de clases.
Parámetros
-
class -
Nombre de la clase a cargar
Valores devueltos
No devuelve ningún valor.
Ver también
- spl_autoload_register() - Registrar las funciones dadas como implementación de __autoload()
carloagonzales at gmail dot com
04-Apr-2012 01:42
qeremy
08-Mar-2012 03:01
Even I have never been using this function, just a simple example in order to explain it;
./myClass.php
<?php
class myClass {
public function __construct() {
echo "myClass init'ed successfuly!!!";
}
}
?>
./index.php
<?php
// we've writen this code where we need
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
// we've called a class ***
$obj = new myClass();
?>
*** At this line, our "./myClass.php" will be included! This is the magic that we're wondering... And you get this result "myClass init'ed successfuly!!!".
So, if you call a class that named as myClass then a file will be included myClass.php if it exists (if not you get an include error normally). If you call Foo, Foo.php will be included, and so on...
And you don't need some code like this anymore;
<?php
include_once("./myClass.php");
include_once("./myFoo.php");
include_once("./myBar.php");
$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>
Your class files will be included "automatically" when you call (init) them without these functions: "include, include_once, require, require_once".
