PHP学习笔记14(魔术常量)

编程入门 行业动态 更新时间:2024-10-26 04:32:32

PHP学习笔记14(魔术<a href=https://www.elefans.com/category/jswz/34/1769305.html style=常量)"/>

PHP学习笔记14(魔术常量)

PHP魔术常量

    PHP中有很多预定义常量。目前所学习的这8个常量是会会随着它在代码中的位置而改变的常量。这些特殊常量均不区分大小写。

__LINE__

    这个常量指的是脚本中当前行的行号。例如:

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

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

__FILE__

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

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

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

__DIR__

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

__FUNCTION__

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

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

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

__NAMESPACE__

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

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

__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的方法。



更多推荐

PHP学习笔记14(魔术常量)

本文发布于:2024-03-15 06:55:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738333.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常量   魔术   学习笔记   PHP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!