downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

call_user_method_array> <クラス/オブジェクト関数
[edit] Last updated: Fri, 25 May 2012

view this page in

__autoload

(バージョン情報なし。おそらく SVN 版にしか存在しないでしょう)

__autoload未定義のクラスのロードを試みる

説明

void __autoload ( string $class )

この関数を定義すれば、クラスのオートローディング を有効にできます。

パラメータ

class

ロードするクラスの名前。

返り値

値を返しません。

参考



add a note add a note User Contributed Notes __autoload
carloagonzales at gmail dot com 04-Apr-2012 07:42
__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!";
    }
}
?>
qeremy 08-Mar-2012 08: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".

 
show source | credits | stats | sitemap | contact | advertising | mirror sites