php常用执行函数(PHP自动载入类文件函数__autoload的使用方法)
php常用执行函数
PHP自动载入类文件函数__autoload的使用方法开发面向对象的应用程序时,往往要对每个类的定义建立一个 PHP 源文件。这样的做法产生的一个很大的烦恼就是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。
在PHP开发的系统中,当在一个文件中需要调用另一个PHP文件中声明的类时,就需要通过include或require把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都包含进来,是一个让人很头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的自动加载类。
在 PHP 5 中,可以定义一个 __autoload()
函数,它会在试图使用尚未被定义的类时自动调用,通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类, __autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,比如 xxx_classname.php
、classname_xxx.php
以及就是classname.php
等等。
我们以一个例子来说明一下__autoload 的使用方法,下面分别从 ClassA.php 和 ClassB.php 文件中加载 ClassA 和 ClassB 类
|
<?php //定义一个类ClassA,文件名为ClassA.php class ClassA{ public function __construct(){ echo "ClassA load success!" ; } } ?> |
|
<?php //定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA class ClassB extends ClassA { public function __construct(){ echo "ClassB load success!" ; } } ?> |
|
<?php function __autoload( $classname ) { $classpath = "./" . $classname . '.php' ; if ( file_exists ( $classpath )){ require_once ( $classpath ); } else { echo 'class file' . $classpath . 'not found!' ; } } //ClassA类不存在时,自动调用__autoload()函数,传入参数”ClassA” $obj = new ClassA(); //ClassB类不存在时,自动调用__autoload()函数,传入参数”ClassB” $obj2 = new ClassB(); ?> |
能过上面的例子,我们发现在使用ClassA和ClassB时,我们并没有手动引入ClassA.php和ClassB.php文件,但却能正常使用这两个类,可见__autoload是多么地好用。
但在使用__autoload时也要注意一些问题,比如上面的ClassB类,它是继承了ClassA类,如果这时ClassA和ClassB不在同一个目录时就会出错,所以建议把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类。还有一点就是在使用自动载入函数时一定要注意类名与文件名的对应关系。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
- php常驻进程(PHP 多进程与信号中断实现多任务常驻内存管理实例方法)
- php检查语法(使用 PHP Masked Package 屏蔽敏感数据的实现方法)
- php 5与7有什么改变(php5与php7的区别点总结)
- thinkphp静态怎么设置(浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法)
- php支付系统(php实现的支付宝网页支付功能示例基于TP5框架)
- php中trim函数(PHP中ltrim函数的用法与实例讲解)
- php验证码思路(PHP实现字母数字混合验证码功能)
- php怎么引用文件(php引用和拷贝的区别知识点总结)
- php如何调用类(php创建类并调用的实例方法)
- php制作用户登录(php实现登录页面的简单实例)
- ubuntu安装php(在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法)
- php设计模式如何实现(php模式设计之观察者模式应用实例分析)
- php命名对照表(PHP命名空间用法实例分析)
- php7 入门(php7新特性的理解和比较总结)
- php开发pdo事务处理(Cpanel下Cron Jobs定时执行PHP的方法)
- iis运行php程序(Windows2003+IIS7 Express使用FastCgi运行php)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
热门推荐
- mysql数据库三种模式(MySQL数据库是如何实现XA规范的)
- C# volatile与lock
- mysql中基本语句(MySQL中explain语句的基本使用教程)
- python3的循环怎么用(对Python3 goto 语句的使用方法详解)
- WinForm窗体间如何传值
- wampserver安装后怎么使用(解决安装WampServer时提示缺少msvcr110.dll文件的问题)
- 浏览器怎么登录宝塔linux面板(宝塔Linux面板如何绑定域名?登录地址是多少?)
- 香港服务器有哪些优势呢(浅谈香港服务器与香港云主机的区别)
- python numpy数组拼接(Python快速转换numpy数组中Nan和Inf的方法实例说明)
- vue重置密码(Vue 两个字段联合校验之修改密码功能的实现)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9