好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php的自动加载机制 php自动加载函数

很多站长朋友们都不太清楚php的自动加载机制,今天小编就来给大家整理php的自动加载机制,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 详解PHP文件的自动加载(autoloading) 2、 php自动加载类机制怎么用? 3、 从PHP Fatal error: Uncaught Error: Class '' not found in php:说起 详解PHP文件的自动加载(autoloading)

传统上,在PHP里,当我们要用到一个class文件的时候,我们都得在文档头部require或者include一下:

<?php

require_once('includes/functions.php');

require_once('includes/database.php');

require_once('includes/user.php');

...

但是一旦要调用的文档多了,就得每次都写一行,瞅着也不美观,有什么办法能让PHP文档自动加载呢?

<?php

function

__autoload($class_name)

{

require

"./{$class_name}.php";

}

对,可以使用PHP的魔法函数__autoload(),上面的示例就是自动加载当前目录下的PHP文件。当然,实际当中,我们更可能会这么来使用:

<?php

function

__autoload($class_name)

{

$name

=

strtolower($class_name);

$path

=

"includes/{$name}.php";

if(file_exists($path)){

require_once($path);

}else{

die("the

file

{$class_name}

could

not

be

found");

}

}

也即是做了一定的文件名大小写处理,然后在require之前检查文件是否存在,不存在的话显示自定义的信息。

类似用法经常在私人项目,或者说是单一项目的框架中见到,为什么呢?因为你只能定义一个__autoload

function,在多人开发中,做不到不同的developer使用不同的自定义的autoloader,除非大家都提前说好了,都使用一个__autoload,涉及到改动了就进行版本同步,这很麻烦。

也主要是因为此,有个好消息,就是这个__autoload函数马上要在7.2版本的PHP中弃用了。

Warning

This

feature

has

been

DEPRECATED

as

of

PHP

7.2.0.

Relying

on

this

feature

is

highly

discouraged.

那么取而代之的是一个叫spl_autoload_register()的东东,它的好处是可以自定义多个autoloader.

//使用匿名函数来autoload

spl_autoload_register(function($class_name){

require_once('...');

});

//使用一个全局函数

function

Custom()

{

require_once('...');

}

spl_autoload_register('Custom');

//使用一个class当中的static方法

class

MyCustomAutoloader

{

static

public

function

myLoader($class_name)

{

require_once('...');

}

}

//传array进来,第一个是class名,第二个是方法名

spl_autoload_register(['MyCustomAutoloader','myLoader']);

//甚至也可以用在实例化的object上

class

MyCustomAutoloader

{

public

function

myLoader($class_name)

{

}

}

$object

=

new

MyCustomAutoloader;

spl_autoload_register([$object,'myLoader']);

值得一提的是,使用autoload,无论是__autoload(),还是spl_autoload_register(),相比于require或include,好处就是autoload机制是lazy

loading,也即是并不是你一运行就给你调用所有的那些文件,而是只有你用到了哪个,比如说new了哪个文件以后,才会通过autoload机制去加载相应文件。

当然,laravel包括各个package里也是经常用到spl_autoload_register,比如这里:

/**

*

Prepend

the

load

method

to

the

auto-loader

stack.

*

*

@return

void

*/

protected

function

prependToLoaderStack()

{

spl_autoload_register([$this,

'load'],

true,

true);

}

php自动加载类机制怎么用?

自动加载说简单点就是实现__autoload函数,在函数中加载类文件,如下:[mw_shl_code=php,true]function __autoload($className) { require_once($className.'.php');}[/mw_shl_code]

从PHP Fatal error: Uncaught Error: Class '' not found in php:说起

文件不存在,检查是否使用了自动加载,可能是composer的autoload配置错误。如果没有使用composer,确认自己是否require_once把文件包含进来。如果已经包含了,检查命名空间和类名大小写是否正确。命名空间前不能有任何输出。

因为我们还要使用require_once把要使用的类包含进来。

use 是逻辑引用,require是物理引用。必须把类包含进来才能使用。

检查下大小写,单词拼写

现在用框架写项目一般很难看到第一行的require_once了,因为php5之后就有了自动加载机制,而框架带的composer文件,都已经帮我们把autoload配置好了,我们无需再关注类的物理位置,直接使用即可。

关于php的自动加载机制的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php的自动加载机制 php自动加载函数的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did198097
更新时间:2023-04-26   阅读:26次

上一篇: php代码怎么写的好看 php代码教程

下一篇:php改了代码不生效 php修改html里面的内容不生效

相关资讯

最新资料更新

  • 1.php数据导出csv php导出大量数据
  • 2.php实现权限分配 php权限设计
  • 3.php中套js代码 js中写php代码
  • 4.php课堂系统 php网课系统
  • 5.php客户信息管理 php用户管理
  • 6.token验证php Token验证失败异地登陆什么意思
  • 7.PHP外部引用样式 php引用外部文件
  • 8.php存储的知识 php会话保存数据的两种方式是
  • 9.php查询模块 php函数查询
  • 10.php交叉报表 ureport 交叉报表
  • 11.php数据抓取实例 php采集数据
  • 12.韩顺平php视频教程下载 韩顺平oracle视频
  • 13.php环境配置工具 phpstorm2021配置php环境
  • 14.php换文字颜色 php文字颜色代码
  • 15.php大牛交流教程 php大神
  • 16.kohanaphp版本 koo版
  • 17.php手机qr php手机编程软件
  • 18.phpgetrows的简单介绍
  • 19.php项目任务分配 php任务调度框架
  • 20.php开启sslopen php开启gd库

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]