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?