PHP提供了大量的预定义常量,不过很多常量都是由不同的扩展库提供的,只有在加载了这些扩展库时才会出现。
有8个魔术常量,他们的值随着它们在代码中的位置的改变而改变。
15.1 _ LINE_
文件中当前行号。
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>
15.2 _ FILE_
文件完成的路径和文件名。若果用在被包含文件中,则返回被包含文件名。
<?php
echo '该文件位于 " ' . __FILE__ . ' " ';
?>
15.3 _ DIR_
文件所在的目录。
<?php
echo '该文件位于 " ' . __DIR__ . ' " ';
?>
15.4 _ FUNCTION_
函数名称。返回该函数被定义时的名字。
<?php
function test() {
echo '函数名为:' . __FUNCTION__ ;
}
test();
?>
15.5 _ CLASS_
类的名称。返回类被定义时的名称。
<?php
class test {
function _print() {
echo '类名为:' . __CLASS__ . "<br>";
echo '函数名为:' . __FUNCTION__ ;
}
}
$t = new test();
$t->_print();
?>
15.6 _ TRAIT_
php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,PHP新增了Trait这个特性。
用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化.
一个类可以组合多个Trait,通过逗号相隔。
Trait中的方法会覆盖 基类中的同名方法,而本类会覆盖Trait中同名方法。
注意:当trait定义了属性后,类就不能定义同样名称的属性,否则会产生 fatal error,除非是设置成相同可见度、相同默认值。
<?php
trait Dog{
public $name="dog";
public function drive(){
echo "This is dog drive";
}
public function eat(){
echo "This is dog eat";
}
}
class Animal{
public function drive(){
echo "This is animal drive";
}
public function eat(){
echo "This is animal eat";
}
}
class Cat extends Animal{
use Dog;
public function drive(){
echo "This is cat drive";
}
}
$cat = new Cat();
$cat->drive(); //输出:This is cat drive
echo "<br/>";
$cat->eat(); //输出:This is dog eat.
?>
15.7 _ METHOD_
类的方法名。返回该方法被定义时的名字(区分大小写)。
<?php
function test() {
echo '函数名为:' . __METHOD__ ;
}
test();
?>
15.8 _ NAMESPACE_
当前命名空间的名称。
<?php
namespace MyProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>
PHP魔术常量详解与示例
本文详细介绍了PHP中的魔术常量,如__LINE__, __FILE__, __DIR__, __FUNCTION__, __CLASS__, __TRAIT__, __METHOD__和__NAMESPACE__。这些常量的值会随着代码位置的变化而变化,在调试和理解代码执行上下文时非常有用。示例代码展示了如何在不同场景下使用这些魔术常量。
179

被折叠的 条评论
为什么被折叠?



