上午在更新一个php的插件时,遇到了一个类名被重复声明的问题。虽然不是自己写代码造成的(其它原因,已修复),不过在调试时还是用到了一个php中内置的用于判断类是否存在的函数,class_exists()
这篇博文,飞鸟慕鱼就来和大家说一说,在php中判断类是否存在的方法以及class_exists()函数的介绍。
php class_exists() 函数介绍
class_exists():判断php中的类是否存在或定义
语法:
class_exists($class_name,$autoload)
参数:
$class_name:要判断的类的名称
$autoload:默认TRUE,是否调用 _autoload,如果调用默认即可,关闭 FALSE。
返回值:
如果 class_exists() 判断的类已定义,返回TRUE,否则返回FALSE
php class_exists() 函数的使用
php代码
<?php
class MyClass{
public function e(){
return '';
}
}
//判断的类存在
$bool = class_exists('MyClass');
var_dump($bool);
//判断的类不存在
$bool = class_exists('MyClass_1');
var_dump($bool);
?>运行结果:
bool(true) bool(false)
php 判断一个类是否定义或存在
1、判断一个类是否存在,并调用
php代码
<?php
//这里定义了一个类
class MyClass{
public function e(){
return '';
}
}
//判断类是否已定义
if (class_exists('MyClass')) {
$a = new MyClass();
echo $a->e();
}else{
echo '没有找到类';
}
?>运行结果:
2、使用 namespace 命名空间的类
a.php 文件代码:
<?php
//使用命名空间
namespace sb;
//新建一个类
class sp{
}
?>b.php 文件,判断类是否存在
<?php
//引入 a.php
require 'a.php';
// 判断类名
var_dump(class_exists('sp'));
// 判断命名空间
var_dump(class_exists('sb\sp'));
// 判断命名空间,关闭 __autoload 方法调用
var_dump(class_exists('sb\sp',false));
?>运行结果:
bool(false) bool(true) bool(true)
注意:
1、class_exists('sp') 返回的结果为 false,说明此类只能通过命令空间去查找
2、class_exists('sb\sp') 返回 true
3、namespace():防止编写的代码与PHP内部的类/函数/常量发生冲突,并提高代码的可读性
class_exists() 函数扩展说明:
php中的 class_exists() 函数一定要慎用,主要因为它的第二参数标明是否要调用 __autoload 方法去加载类。由于 php 中的 __autoload 方法的机制,可能会对磁盘进行大量的I/O操作,严重影响效率,所在大家在使用 class_exists() 函数时,一定要将第二个参数设置为 false.
如以下代码:
<?php
//第二个参数为 false
if(class_exists('class',false)){
return true;
}else{
return false;
}
?> 以上就是php 判断类是否存在或定义的方法。真正的快乐,不是狂喜,亦不是痛苦,它是细水长流,碧海无波,在芸芸众生中做一个普通的人,享受生命一刹那的喜悦。更多关于php 判断类是否存在或定义的方法请关注haodaima.com其它相关文章!