php有个自动加载的函数叫__autoload,当找不到一个类包的时候,系统会执行这个函数
1.建立一个学生类文件Stu.class.php
<?php //create by java-er.com 2020-02-10 class Stu{ private $name; private $sex; function __construct($name,$sex){ $this->name = $name; $this->sex = $sex; } function call(){ echo "my name is ".$this->name; echo "<hr />I am a ".$this->sex; } } ?>
2.建立一个测试文件 test.php
当系统找不到Stu类的时候,自动执行__autoload函数,帮我们require进来。
<?php //create by java-er.com 2020-02-10 function __autoload($class){ require_once $class.'.class.php'; } $stu = new Stu('Jack',"boy"); $stu->call(); ?>
输出
my name is Jack I am a boy
3.命名空间的处理
建立一个文件夹Lib Lib 下设置一个文件score
<?php namespace Lib; //create by java-er.com 2020-02-10 class Score{ private $name; private $score; function __construct($name,$score){ $this->name = $name; $this->score = $score; } function call(){ echo "my name is ".$this->name; echo "<hr />My sports score is ".$this->score; } } ?>
修改test.php如下
<?php //create by java-er.com 2020-02-10 function __autoload($class){ echo '['.$class.']<hr>'; $class = str_replace("\\", "/", $class); require_once $class.'.class.php'; } $stu = new Stu('Jack',"boy"); $stu->call(); echo '<hr />'; use Lib\Score; $score = new Score('Tom','97'); $score->call(); ?>
输出
[Stu] my name is Jack I am a boy [Lib\Score] my name is Tom My sports score is 97