1. instanceof
/ is_a()
类型运算符 ,用于确定一个 变量是否属于一个 class
的实例
1. 如果被判断的变量是类的实例
2. 如果被判断的变量是被实例的classs所extends的class
3. 如果被判断的变量是被实例的classs所implements的class
4. 如果变量是与被实例的class一样的,变量的str 与被实例类一致,变量str 与被实例类继承的父类、接口一致
都会返回 True
class MyClass extends MyDaddyClass implements MyInterface {}
class NotMyClass{}
class MySonClass extends MyClass{}
class MyDaddyClass {}
interface MyInterface{}
# 实例化 MyClass
$a = new MyClass;
var_dump($a instanceof MyClass); // true
var_dump($a instanceof MyDaddyClass); // true
var_dump($a instanceof NotMyClass); // false
var_dump($a instanceof MySonClass); // false
var_dump($a instanceof MyInterface); // true
//查询变量
$a = new MyClass;
$b = new MyClass;
$c = 'MyClass';
$d = 'NotMyClass';
$e = 'MyInterface';
$f = 'MyInterface1';
var_dump($a instanceof $b); // True
var_dump($a instanceof $c); // True
var_dump($a instanceof $d); // False
var_dump($a instanceof $e); // True
var_dump($a instanceof $f); // false
is_a() 适用版本:(PHP 4 >= 4.2.0, PHP 5, PHP 7),用法是
class WidgetFactory
{
var $oink = 'moo';
}
// create a new object
$WF = new WidgetFactory();
if (is_a($WF, 'WidgetFactory')) {
echo "yes, \$WF is still a WidgetFactory\n";
}
其他用法,基本与 instanceof
一致。
2. ...
可变参数函数 (>PHP 5.6)
1.可以代替 5.5 以前的 func_num_args()
获取入参总数 、 func_get_arg()
获取入参第一个参数 、fun_get_args()
获取入参所有参数。
function used(…$args){
var_dump($args); // func_num_args
var_dump( $args[0]); // func_get_arg
var_dump( $args); // fun_get_args
}
2.将数组 value 转换为函数的参数列表
function add($a,$b){
echo $a + $b;
}
$args = array(1,2);
add(…$args);
# 输出 3
3.也可以在1 中,使用
function display($name,$age,…$args){
//todo
}
# 会截取前两个作为 $name 和 $age ,剩下的放在 $args 数组
3. 版本、扩展相关:(PHP 4, PHP 5, PHP 7)
phpversion();
#很直观
phpinfo();
# 同 php -i ,最基本的
extension_loaded('gd')
# 检查一个扩展是否已经加载 大小写不敏感
get_loaded_extensions()
# 效果同 php -m
get_extension_funcs('xml');
# 获取xml modules 的函数数组
4.trigger_error
trigger_error("Cannot divide by zero", E_USER_ERROR);
产生一个用户级别的错误信息,比如laravel 就是在那种全代码页面的错误,中断运行
“`
Fatal error: Cannot divide by zero in /Users/leon/Documents/workspace/test/func/dl.php on line 10
5. 获取类名
get_called_class()
获取调用静态方法的类名
get_parent_class()
获取当前类的父类的类名
get_class()
获取对象所属类的名字