Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

spl_autoload

(PHP 5 >= 5.1.0RC1)

spl_autoload --  Default implementation for __autoload()

Description

void spl_autoload ( string class_name [, string file_extensions] )

This function is intended to be used as a default implementation for __autoload(). If nothing else is specified and autoload_register() is called without any parameters then this functions will be used for any later call to __autoload(). By default it checks all include paths to contain failnames built up by the lowercase class name appended by the filename extensions .inc and .php.



add a note add a note User Contributed Notes
spl_autoload
safak_ozpinar at NOSPAM dot yahoo dot com
25-Sep-2007 07:17
Note that, the orders of file extensions is important for performance. You should make the priority of your favourite file extension higest or use only one extension for your class files. Check out this example:

Some class files:

ClassA.php
<?php class ClassA { var $val = 'Hello from class "ClassA"'; } ?>
ClassB.php
<?php class ClassB { var $val = 'Hello from class "ClassB"'; } ?>
ClassC.php
<?php class ClassC { var $val = 'Hello from class "ClassC"'; } ?>
ClassD.php
<?php class ClassD { var $val = 'Hello from class "ClassD"'; } ?>
ClassE.php
<?php class ClassE { var $val = 'Hello from class "ClassE"'; } ?>

1. Simple:
<?php
// default priority: .inc .php
for($n=65; $n<70; $n++) {
   
$className = 'Class'.chr($n);
   
spl_autoload($className);
   
$ins = new $className;
    echo
$ins->val.'<br>';
}
// 4.2 miliseconds
?>

2. Change priority:
<?php
spl_autoload_extensions
('.php,.inc');
// new priority: .php .inc
for($n=65; $n<70; $n++) {
   
$className = 'Class'.chr($n);
   
spl_autoload($className);
   
$ins = new $className;
    echo
$ins->val.'<br>';
}
// 1.4 miliseconds
?>

Or you can use this simple function that runs a bit faster for the extensions with lower priority :)
<?php
function my_autoload($className, $extList='.inc,.php') {
   
$ext = explode(',',$extList);
    foreach(
$ext as $x) {
       
$fname = $className.$x;
        if(@
file_exists($fname)) {
            require_once(
$fname);
            return
true;
        }
    }
    return
false;
}

for(
$n=65; $n<70; $n++) {
   
$className = 'Class'.chr($n);
   
my_autoload($className);
   
$ins = new $className;
    echo
$ins->val.'<br>';
}
// 2.6 miliseconds
?>
---
Safak Ozpinar - Istanbul University, Computer Engineering

spl_classes> <spl_autoload_unregister
Last updated: Fri, 26 Jan 2007
 
 
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 324

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 330
Z058440144362 Z348613067571