• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • trait_exists()

    (PHP 5 >= 5.4.0, PHP 7)

    检查指定的 trait 是否存在

    说明

    trait_exists(string $traitname[,bool $autoload]): bool

    参数

    $traitname

    待检查的 trait 的名称

    $autoload

    如果尚未加载,是否使用自动加载(autoload)。

    返回值

    如果 trait 存在返回TRUE,不存在则返回FALSE。发生错误的时候返回NULL

    <?php
    trait World {
      private static $instance;
      protected $tmp;
      public static function World()
      {
        self::$instance = new static();
        self::$instance->tmp = get_called_class().' '.__TRAIT__;
        
        return self::$instance;
      }
    }
    if ( trait_exists( 'World' ) ) {
      
      class Hello {
        use World;
        public function text( $str )
        {
          return $this->tmp.$str;
        }
      }
    }
    echo Hello::World() >text('!!!'); // Hello World!!!
    Traits are compatible with class autoload mechanism - in fact, if you look at source code of trait_exists function, you will find similar peace of code (see Zend/zend_builtin_functions.c)
    What is the default value of $autoload? And in which way traits are autoloaded? Is there something as spl_autoload() for traits?