php 判定类是否存在或界说的要领

上午在更新一个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; } ?>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8914.html