zoukankan      html  css  js  c++  java
  • php之class_exists慎用

    今天在网上查看class_exists方法(http://php.net/manual/en/function.class-exists.php)的用法的时候,发现class_exists方法的定义如下:
    bool class_exists ( string $class_name [, bool $autoload = true ] );
    
    它是有两个参数的,我们平时用这个方法的时候大都只给了第一个参数,第二个参数的默认值是默认为true,而关于第二个参数的解释是:
    autoload
    Whether or not to call __autoload by default.
    
    所以当我们不设置第二个参数时,会去调用__autoload方法去加载类,
    众所周知__autoload方法的机制,它可能会对磁盘进行大量的I/O操作,严重影响效率,所以大家在用这个方法的时候可以用如下两种方法解决:
    
    NO1:把第二个参数设置为false
    NO2:
    
    To find out whether a class can be autoloaded, you can use autoload in this way:
    
    <?php
    //Define autoloader
    function __autoload($className) {
        if (file_exists($className . '.php')) require $className . '.php';
        else throw new Exception('Class "' . $className . '" could not be autoloaded'); 
    }
    
    function canClassBeAutloaded($className) {
        try {
            class_exists($className);
            return true;
        }
        catch (Exception $e) {
            return false;
        }
    }
    ?>
  • 相关阅读:
    -1%256的值是多少?
    Glut,程序的基本架构
    剑指offer:数值的整数次方
    剑指offer:二进制中1的个数
    剑指offer:斐波那契数列的应用
    剑指offer:斐波那契数列
    剑指offer:旋转数组中的最小数字
    弱智的grub消除法
    POJ 3126 Prime Path
    HDU 1426 Sudoku Killer
  • 原文地址:https://www.cnblogs.com/loveyouyou616/p/2810850.html
Copyright © 2011-2022 走看看