自动加载类,__autoload 是如何实现的

红尘无爱 2017-09-12 09:06:21
麻烦大神解释下 这个例子吧

什么文件名 减6 的 什么Action 的 都干嘛的,
谢谢大神了


function __autoload($_className) {
if (substr($_className, -6) == 'Action') {
require ROOT_PATH.'lib1/'.$_className.'.class.php';
} elseif (substr($_className, -5) == 'Model') {
require ROOT_PATH.'lib2/'.$_className.'.class.php';
} else {
require ROOT_PATH.'lib3/'.$_className.'.class.php';
}
}





...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
兽兽 2017-09-13
  • 打赏
  • 举报
回复
_autoload() 方法接收的一个参数,就是欲加载的类的类名,所以这时候需要类名与文件名对应,如 Person.php ,对应的类名就是 Pserson 。 例子: Pserson.php
<?php
class Person {
    private $name;
    private $age;

    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."<br />";
	echo " 我的年龄是:".$this->age;
    }
}
?>
test.php
<?php
function __autoload($class_name) 
{
    require_once $class_name.'.php';
}

//当前页面 Pserson 类不存在则自动调用 __autoload() 方法,传入参数 Person
$p1 = new Person("张三","20");
$p1 -> say();
?>
运行 test.php ,输出: 我的名字叫:张三 我的年龄是:20
果酱很好吃 2017-09-13
  • 打赏
  • 举报
回复
php找不到类的时候就会执行 __autoload(若你定义了) substr 是个函数,用于返回字符串的字串,你看下手册吧
trainee 2017-09-13
  • 打赏
  • 举报
回复
PHP帮助手册在手, 这么简单的问题何须找大神.
pharaoh_shi 2017-09-12
  • 打赏
  • 举报
回复
你应该先了解基础的,再去了解框架中的。 这是我的一篇博客,希望对你有帮助http://blog.shiguopeng.cn/article/13789.html

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧