`

PHP 魔术常量

    博客分类:
  • PHP
 
阅读更多

1,__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
这个变量,我用的是最多的,估计也是大家用的最多的。

web服务器都会指定一个documentroot的,但是不同的服务器,设置的documentroot有可能是不同的,在这种情况下,把一个网站从一个服务器搬家到另一个服务器,这样就有可能因为路径的不同,造成网站跑不起来。

<?php  
/** 
在你的公用的配置文件中,来设置你的根目录,这样就不用担心经常搬家了。 
*/  
define('ROOT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);  
echo ROOT_PATH;  
echo "<br>";  
echo __FILE__;  
echo "<br>";  
echo dirname(__FILE__);  
echo "<br>";  
echo dirname(dirname(__FILE__));  
?>  
 2,__LINE__

文件中的当前行号。

<?php  
echo __LINE__;  //显示,__LINE__所在的行号  
?> 
 3,__CLASS__

类的名称,PHP5返回的结果是区分大小写的

<?php  
class base_class  
{  
 function say_a()  
 {  
 echo "'a' - said the " . __CLASS__ . "<br/>";  
 }  
 function say_b()  
 {  
 echo "'b' - said the " . get_class($this) . "<br/>";  
 }  
}  
  
class derived_class extends base_class  
{  
 function say_a()  
 {  
 parent::say_a();  
 echo "'a' - said the " . __CLASS__ . "<br/>";  
 }  
 function say_b()  
 {  
 parent::say_b();  
 echo "'b' - said the " . get_class($this) . "<br/>";  
 }  
}  
  
$obj_b = new derived_class();  
$obj_b->say_a();  
echo "<br/>";  
$obj_b->say_b();  
?>  
结果为:  
'a' - said the base_class  
'a' - said the derived_class  
  
'b' - said the  derived_class  
'b' - said the derived_class  
 有的时候,我们可以用get_class来代替__CLASS__

4,__FUNCTION__和__METHOD__

__FUNCTION__:函数名称,php5中返回的结果是区分大小写的
__METHOD__:方法中的函数名称,php5中返回的结果是区分大小写的

二个都是取得方法的名称,有什么不同呢?

<?php  
class test  
{  
 function a()  
 {  
 echo __FUNCTION__;  
 echo "<br>";  
 echo __METHOD__;  
 }  
}  
  
function good (){  
 echo __FUNCTION__;  
 echo "<br>";  
 echo __METHOD__;  
}  
  
$test = new test();  
$test->a();  
echo "<br>";  
good();  
?>  
返回结果:  
a  
test::a  
good  
good 
 相对于孤立的函数来说,二个都可以取出函数名,没什么区别,如果是class中的方法时,__FUNCTION__只能取出class的方法名,而__METHOD__不光能取出方法名,还能取出class名

5,__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

如果在5.3以前的版本中想用__DIR__的话,可以这样

<?php  
if(!defined('__DIR__')) {  
 $iPos = strrpos(__FILE__, "/");  
 define("__DIR__", substr(__FILE__, 0, $iPos) . "/");  
}  
?> 
 6,__NAMESPACE__

当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)

7,__STATIC__

当你调用class的静态方法时,返回class名称,区分大小写。如果在继承中调用的话,不管在继承中有没有定义,都能返回继承的class名。

<?php  
//php5.3  
class Model  
{  
 public static function find()  
 {  
 echo __STATIC__;  
 }  
}  
  
class Product extends Model {}  
class User extends Model {}  
  
Product::find(); // "Product"  
User::find(); // "User"  
?>
 
分享到:
评论

相关推荐

    PHP魔术常量及魔术函数.doc

    常用的php魔术常量和魔术函数,有时候使用魔术函数挺方便的。

    PHP的魔术常量__METHOD__简介

    __METHOD__ 是PHP5之后新增的魔术常量,表示的是类文法的名称。魔术常量是一种PHP预定义常量,它的值可以是变化的,PHP中的其它已经存在的魔术常量有__LINE__、__FILE__、__FUNCTION__、__CLASS__等。 下面就用一小...

    php 魔术常量详解及实例代码

    魔术常量 php向它运行的任何脚本提供了大量的预定义常量了,我们常用的php魔术常量有 __CLASS__ __FUNCTION__ __LINE__ __FILE__ __DIR__ __METHOD__了,本文章通过php实例向大家介绍php魔术常量

    PHP 中魔术常量的实例详解

    PHP 中魔术常量的实例详解 本文介绍下,php编程中的魔术常量,掌握并灵活应用这些方法与常量,对于提高php的编程水平,有很大的帮助。有需要的朋友参考学习下。 魔术常量: namespace ns1; class Test { function...

    基于PHP5魔术常量与魔术方法的详解

    魔术常量:1。__LINE__返回文件中的当前行号。2。__FILE__ 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个...

    php 魔术函数和常量一览表

    php 魔术函数和常量一览表

    PHP学习记录之常用的魔术常量详解

    主要介绍了PHP学习记录之常用的魔术常量,结合实例形式总结分析了PHP魔术常量的功能、原理及常见操作技巧,需要的朋友可以参考下

    PHP中几个常用的魔术常量

    有七个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下: 名称 说明 __LINE__ 文件中的当前行号。 __FILE__ 文件...

    PHP5.3中新增的魔术常量__DIR__

    我们知道PHP中提供了一个魔术常量(magic constant)__FILE__,用来指向当前执行的PHP脚本。但PHP没有直接提供该脚本所在目录的常量。也就是说如果我们要得到当前PHP脚本所在的目录,需要使用dirname()这个函数:

    浅谈PHP中的那些魔术常量

    之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结。 其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是通用...

    PHP程序设计-3期(KC016) 课后习题2-2 魔术常量.doc

    PHP程序设计-3期(KC016) 课后习题2-2 魔术常量.doc 学习资料 复习资料 教学资源

    PHP程序设计-3期(KC016) 经验技巧2-2 魔术常量.doc

    PHP程序设计-3期(KC016) 经验技巧2-2 魔术常量.doc 学习资料 复习资料 教学资源

    PHP程序设计-3期(KC016) 拓展知识2-2 魔术常量.doc

    PHP程序设计-3期(KC016) 拓展知识2-2 魔术常量.doc 学习资料 复习资料 教学资源

    PHP程序设计-3期(KC016) 常见问题2-2 魔术常量.docx

    PHP程序设计-3期(KC016) 常见问题2-2 魔术常量.docx 学习资料 复习资料 教学资源

    PHP 预定义变量、魔术常量和魔术方法功能与用法小结

    本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下: PHP 预定义了一些变量、常量、方法,使用起来很方便,例如直接使用 __DIR__ 获取当前文件所在的目录。 下面分别详细介绍一下 PHP...

Global site tag (gtag.js) - Google Analytics