<?php namespace classes\a; class Human { private $name = '张三'; /** * @return string */ public function getName() { return $this->name; } }
<?php namespace classes\b; class Human { private $name = '李四'; /** * @return string */ public function getName() { return $this->name; } }
<?php // spl_autoload_register()函数可以多次调用,即可以注册多个自动加载函数,谁先注册谁先调用 spl_autoload_register( /** * 自动加载函数(匿名函数) * * @param string $class 类名 * @return bool true=加载成功|false=加载失败,返回true会阻止调用下一个自动加载函数(如果注册了多个的话) */ static function ($class) { $class = str_replace('\\', DIRECTORY_SEPARATOR, $class); $file = __DIR__ . "/{$class}.class.php"; if (file_exists($file)) { require_once $file; // require类文件 return true; } return false; } ); use classes\a\Human as HumanA; use classes\b\Human as HumanB; // 由于没有手动require对应的类文件,实例化下面两个类时会因找不到类而触发调用自动加载函数 $humanA = new HumanA(); // 这里会将“classes\a\Human”作为{$class}参数传给自动加载函数,而不是“HumanA” $humanB = new HumanB(); // 这里会将“classes\b\Human”作为{$class}参数传给自动加载函数,而不是“HumanB” $nameA = $humanA->getName(); $nameB = $humanB->getName(); echo "俺叫{$nameA}。" . PHP_EOL; // 俺叫张三。 echo "俺叫{$nameB}。" . PHP_EOL; // 俺叫李四。
Copyright © 2023 码农人生. All Rights Reserved