PHP魔术方法和魔术变量

魔术方法:

  1. __construct(),类的构造函数

  2. __destruct(),类的析构函数

  3. __call(),在对象中调用一个不可访问方法时调用

  4. __callStatic(),用静态方式中调用一个不可访问方法时调用

  5. __get(),获得一个类的成员变量时调用

  6. __set(),设置一个类的成员变量时调用

  7. __isset(),当对不可访问属性调用isset()或empty()时调用

  8. __unset(),当对不可访问属性调用unset()时被调用。

  9. __sleep(),执行serialize()时,先会调用这个函数

  10. __wakeup(),执行unserialize()时,先会调用这个函数

  11. __toString(),类被当成字符串时的回应方法

  12. __invoke(),调用函数的方式调用一个对象时的回应方法

  13. __set_state(),调用var_export()导出类时,此静态方法会被调用。

  14. __clone(),当对象复制完成时调用

  15. __autoload(),尝试加载未定义的类

  16. __debugInfo(),打印所需调试信息

9,10,16目前还没想明白有什么用。

关于   __sleep()函数的描述:serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。 这个看着有点儿意思 。 

 

魔术变量:

 __LINE__

返回文件中的当前行号。

<?php

echo __LINE__;
echo "\n";

///输出结果
wangtb:c wangtb$ php b.php
3

__FILE__

返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

<?php

echo __FILE__;
echo "\n";

####
/Users/wangtb/workspace/coding/abs/c/b.php

__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

<?php

echo __DIR__;
echo "\n";



###
/Users/wangtb/workspace/coding/abs/c

 __FUNCTION__

返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

<?php

function test()
{
    echo __FUNCTION__;
    echo "\n";
    echo "abs";
    echo "\n";
}

test();

#####
php b.php
test
abs

 __CLASS__

返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

<?php

class t
{
    public function __construct()
    {
        echo __CLASS__;
        echo "\n";
    }
}
new t();

###
php b.php

t

 __METHOD__

返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。6

<?php
class t
{
    public function __construct()
    {
        echo __CLASS__;
        echo "\n";
        echo __METHOD__;
        echo "\n";
        echo __FUNCTION__;
        echo "\n";
    }
}
new t();


###
php b.php

t
t::__construct
__construct

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值