• PHP常用的魔术常量


    PHP魔术常量(注:如果在这些魔术常量上面加了引号的话,就会直接输出魔术常量的名字,而不是它所对应的值。)

       

    1、__LINE__

        脚本中当前行的行号。例如:

    <?php
        echo "这是第".__LINE__."行";
    ?>
    

      

    2、__FILE__

        文件的完整路径和文件名。例如:

    <?php
        echo '该文件位于 " ' . __FILE__ . ' " ';
    ?>

    (在PHP4.02以后,该常量只会包含一个绝对路径。)

    3、__DIR__

        文件的路径,但是只是到文件夹这一层,并不会包含文件名。用法和__FILE__一样。

    4、__FUNCTION__

        返回函数被定义时的名字。例如:

    <?php
    function test() {
        echo '函数名为:' . __FUNCTION__ ;
    }
    test();
    ?>
    

     

    输出:函数名为test。(__METHOD__和它有相似的功能,__METHOD__返回的是方法被定义时的名字。)
    

      

    5、__NAMESPACE__

        返回当前命名空间的名称,该常量在编译时被定义。例如:

    <?php
    namespace MyProject;
    
    echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
    ?>
    

      


    6、__TRAIT__

        该魔术常量可以理解成一种虚拟的多继承方式(PHP中只有单继承的概念)。用法:

    trait testa{
        function mytesta(){
            echo 'this is a test';
        }
    }
    trait testb{
        function mytestb(){
            echo 'this is another test';
        }
    }
    

      

    可以看到,除了关键字不同,trait的用法和声明一个类是一样的。(为了体现trait的用法,此处使用两个trait)。现在有一个类,要同时继承testa和testb两个方法。可以这样定义:

    class myclass{
        use testa,testb;
    }
    

      

    注:在类中进行“多继承”的时候,多个trait要用逗号隔开。通过这种方法,当新声明一个变量时,他就可以使用这两个类的方法了。

    $a=new myclass();
    $a->mytesta();
    $a->mymestb();
    //这样做是可以的。
    

      

        如果上面两个trait的方法重名了(例如两个trait全部使用了名为mytest的方法),这将会引起冲突。可以在定义myclass类的use testa,testb代码后面加一组花括号:

    class myclass{
        use testa,testb{
            testa::mytest insteadof testb;
            testb::mytest as mytestb;
        }
    }
    

     


    有两种方法来化解冲突:一种就是用testa里面的mytest方法来代替testb里面的同名方法。第二种就是用as的方式为testb里面的重名方法改一个名字。

    注:1.一般情况下,trait中只有方法,没有属性。单继承的方式更适合属性。

    2.trait不能实例化,也就是说,不能使用new的方式来让一个trait实例化。

    3.trait中的方法要想让使用trait的类使用的话,该方法必须是public。

    4.trait中可以嵌套trait。也就是说,一个trait中可以使用use的方法来嵌套另外一个trait。如果后面有类来使用这个trait的话,这个类可以获得两个trait中的所有为public的方法。

  • 相关阅读:
    SQL
    第九章
    第三章 表单
    第二章 表格,列表,媒体元素
    HTML5基础
    Java第一本书总复习
    字符串
    人机猜拳
    类的无参方法
    类和对象
  • 原文地址:https://www.cnblogs.com/1500418882qqcom/p/10450793.html
Copyright © 2020-2023  润新知