一些 PHP 类相关的函数

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() 获取对象所属类的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值