GVKun编程网logo

php魔术变量用法实例详解(php魔术变量用法实例详解图)

21

对于想了解php魔术变量用法实例详解的读者,本文将提供新的信息,我们将详细介绍php魔术变量用法实例详解图,并且为您提供关于PHP魔术变量和魔术函数详解、PHP魔术变量和魔术函数详解_PHP、PHP魔

对于想了解php魔术变量用法实例详解的读者,本文将提供新的信息,我们将详细介绍php魔术变量用法实例详解图,并且为您提供关于PHP 魔术变量和魔术函数详解、PHP 魔术变量和魔术函数详解_PHP、PHP 魔术变量和魔术函数详解_php技巧、PHP 魔术变量和魔术函数详解_PHP教程的有价值信息。

本文目录一览:

php魔术变量用法实例详解(php魔术变量用法实例详解图)

php魔术变量用法实例详解(php魔术变量用法实例详解图)

《:PHP魔术变量用法实例详解》要点:
本文介绍了:PHP魔术变量用法实例详解,希望对您有用。如果有疑问,可以联系我们。

本文实例讲述了PHP魔术变量用法,其中__DIR__是PHP5.3新增的,分享给大家供大家参考.具体用法分析如下:PHP应用

系统常量

__FILE__ 当前文件名
__LINE__ 当前行数
__FUNCTION__ 当前函数名
__CLASS__ 当前类名
__METHOD__ 当前对象的办法名

详细分析

1. __FILE__

文件的完整路径和文件名.如果用在被包含文件中,则返回被包含的文件名.自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径. 
PHP 常量dirname(__file__) 
__FILE__ :被称为PHP魔术常量,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径 

1)dirname(__FILE__) 函数返回的是脚本所在在的路径. 更新网络 
比如文件 b.PHP 包含如下内容: 

代码如下:
<?PHP  
$basedir = dirname(__FILE__);  
echo $basedir 
//将在页面打印出一个这个文件所在绝对路径! 
?>

 
我做的测试得到结果: E:websiteothertestcms 
这个相当于,asp中的server.mappth的用法 
如果b.PHP被其他目录里的a.PHP文件require 或者 include 去引用的话. 变量$basedir 的内容还是b.PHP所在的那个文件夹的路径. 而不是变成a.PHP文件所在的目录.

2)dirname(__FILE__) 一般会返回文件所的当前目录到系统根目录的一个目录结构. 
不会返回当前的文件名称. dirname(__FILE__) 也可能返回一个 . (当前目录) [原因是 b.PHP 文件在 http.conf 或者 PHP 配置开发环境的默认WEB目录下

代码如下:
<?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' C said the " . __CLASS__ . "<br/>";
}
function say_b()
{
echo "'b' C said the " . get_class($this) . "<br/>";
}
}
class derived_class extends base_class
{
function say_a()
{
parent::say_a();
echo "'a' C said the " . __CLASS__ . "<br/>";
}
function say_b()
{
parent::say_b();
echo "'b' C said the " . get_class($this) . "<br/>";
}
}
$obj_b = new derived_class();
$obj_b->say_a();
echo "<br/>";
$obj_b->say_b();
?>

结果为:
代码如下:
'a' C said the base_class
'a' C said the derived_class
'b' C said the  derived_class
'b' C 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__,$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中魔术办法

__construct() 当实例化一个对象的时候,这个对象的这个办法首先被调用.
__destruct() 当删除一个对象或对象操作终止的时候,调用该办法.
__get() 当试图读取一个并不存在的属性的时候被调用.
__set() 当试图向一个并不存在的属性写入值的时候被调用.
__call() 当试图调用一个对象并不存在的办法时,调用该办法.
__toString() 当打印一个对象的时候被调用
__clone() 当对象被克隆时,被调用
__isset()
__unset()
__autoload($classname)
__sleep()
__wakeup()

希望本文所述对大家的PHP程序设计有所赞助.

《:PHP魔术变量用法实例详解》是否对您有启发,欢迎查看更多与《:PHP魔术变量用法实例详解》相关教程,学精学透。小编 jb51.cc为您提供精彩教程。

PHP 魔术变量和魔术函数详解

PHP 魔术变量和魔术函数详解

魔术变量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

__LINE__

文件中的当前行号。

实例:

代码如下:

以上实例输出结果为:

代码如下:

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

代码如下:

以上实例输出结果为:

代码如下:PHP ”

__DIR__

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

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

实例:

代码如下:

以上实例输出结果为:

代码如下:文件位于 “ E:\wamp\www\test ”

__FUNCTION__

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

实例:

代码如下:

以上实例输出结果为:

代码如下:函数名为:test

__CLASS__

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

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

实例:

代码如下:PHP class test { function _print() { echo '类名为:' . __CLASS__ . "
"; echo '函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>

以上实例输出结果为:

类名为:test 函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

代码如下:}
$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

代码如下:Hello World!

__METHOD__

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

实例:

代码如下:301">

以上实例输出结果为:

代码如下:函数名为:test

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

代码如下:

以上实例输出结果为:

代码如下:

魔术函数

__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct() 当删除一个对象或对象操作终止时被调用。

__call() 对象调用某个方法, 若方法存在,则直接调用; 若不存在,则会去调用__call函数。

__get() 读取一个对象的属性时, 若属性存在,则直接返回属性值; 若不存在,则会调用__get函数。

__set() 设置一个对象的属性时, 若属性存在,则直接赋值; 若不存在,则会调用__@R_498_5301@。

__toString() 打印一个对象的时被调用。如echo $obj;或print $obj;

__clone() 克隆对象时被调用。如:$t=new test();$t1=clone $t;

__sleep() serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup() unserialize时被调用,做些对象的初始化工作。

__isset() 检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset() unset一个对象的属性时被调用。如:unset($c->name)。

__set_state() 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload() 实例化一个对象时,如果对应的类不存在,则该方法被调用。

以上就是本文的全部内容了,小伙伴们是否对魔术变量和魔术函数有了新的认识了呢,希望大家喜欢本文内容。

总结

以上是小编为你收集整理的PHP 魔术变量和魔术函数详解全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

php魔术函数魔术变量

PHP 魔术变量和魔术函数详解_PHP

PHP 魔术变量和魔术函数详解_PHP

魔术变量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

立即学习“PHP免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

__LINE__

文件中的当前行号。

实例:

代码如下:


echo ''这是第 “ ''  . __LINE__ . '' ” 行'';
?>

以上实例输出结果为:

代码如下:


这是第 “ 2 ” 行

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

代码如下:


echo ''该文件位于 “ ''  . __FILE__ . '' ” '';
?>

以上实例输出结果为:

代码如下:


该文件位于 “ E:\wamp\www\test\index.php ”

__DIR__

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

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

实例:

代码如下:


echo ''该文件位于 “ ''  . __DIR__ . '' ” '';
?>

以上实例输出结果为:

代码如下:


该文件位于 “ E:\wamp\www\test ”

__FUNCTION__

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

实例:

代码如下:


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

以上实例输出结果为:

代码如下:


函数名为:test

__CLASS__

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

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

实例:

代码如下:


class test {
 function _print() {
  echo ''类名为:''  . __CLASS__ . "
";
  echo  ''函数名为:'' . __FUNCTION__ ;
 }
}
$t = new test();
$t->_print();
?>

以上实例输出结果为:

类名为:test
函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

代码如下:


class Base {
    public function sayHello() {
        echo ''Hello '';
    }
}
 {
    public function sayHello() {
        parent::sayHello();
        echo ''World!'';
    }
}
class MyHelloWorld extends Base {
   
}
$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

代码如下:


Hello World!

__METHOD__

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

实例:

代码如下:


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

以上实例输出结果为:

代码如下:


函数名为:test

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

代码如下:


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

以上实例输出结果为:

代码如下:


命名空间为:"MyProject"

魔术函数

__construct()
    实例化对象时被调用,
    当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct()
    当删除一个对象或对象操作终止时被调用。

__call()
    对象调用某个方法,
    若方法存在,则直接调用;
    若不存在,则会去调用__call函数。

__get()
    读取一个对象的属性时,
    若属性存在,则直接返回属性值;
    若不存在,则会调用__get函数。

__set()
    设置一个对象的属性时,
    若属性存在,则直接赋值;
    若不存在,则会调用__set函数。

__toString()
    打印一个对象的时被调用。如echo $obj;或print $obj;

__clone()
    克隆对象时被调用。如:$t=new Test();$t1=clone $t;

__sleep()
    serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup()
    unserialize时被调用,做些对象的初始化工作。

__isset()
    检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset()
    unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()
    调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()
    实例化一个对象时,如果对应的类不存在,则该方法被调用。

以上就是本文的全部内容了,小伙伴们是否对魔术变量和魔术函数有了新的认识了呢,希望大家喜欢本文内容。

PHP 魔术变量和魔术函数详解_php技巧

PHP 魔术变量和魔术函数详解_php技巧

魔术变量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

立即学习“PHP免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

__LINE__

文件中的当前行号。

实例:

复制代码 代码如下:

echo ''这是第 “ ''  . __LINE__ . '' ” 行'';
?>

以上实例输出结果为:

复制代码 代码如下:

这是第 “ 2 ” 行

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

复制代码 代码如下:

echo ''该文件位于 “ ''  . __FILE__ . '' ” '';
?>

以上实例输出结果为:

复制代码 代码如下:

该文件位于 “ E:\wamp\www\test\index.php ”

__DIR__

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

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

实例:

复制代码 代码如下:

echo ''该文件位于 “ ''  . __DIR__ . '' ” '';
?>

以上实例输出结果为:

复制代码 代码如下:

该文件位于 “ E:\wamp\www\test ”

__FUNCTION__

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

实例:

复制代码 代码如下:

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

以上实例输出结果为:

复制代码 代码如下:

函数名为:test

__CLASS__

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

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

实例:

复制代码 代码如下:

class test {
 function _print() {
  echo ''类名为:''  . __CLASS__ . "
";
  echo  ''函数名为:'' . __FUNCTION__ ;
 }
}
$t = new test();
$t->_print();
?>

以上实例输出结果为:

类名为:test
函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

复制代码 代码如下:

class Base {
    public function sayHello() {
        echo ''Hello '';
    }
}
 {
    public function sayHello() {
        parent::sayHello();
        echo ''World!'';
    }
}
class MyHelloWorld extends Base {
   
}
$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

复制代码 代码如下:

Hello World!

__METHOD__

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

实例:

复制代码 代码如下:

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

以上实例输出结果为:

复制代码 代码如下:

函数名为:test

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

复制代码 代码如下:

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

以上实例输出结果为:

复制代码 代码如下:

命名空间为:"MyProject"

魔术函数

__construct()
    实例化对象时被调用,
    当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct()
    当删除一个对象或对象操作终止时被调用。

__call()
    对象调用某个方法,
    若方法存在,则直接调用;
    若不存在,则会去调用__call函数。

__get()
    读取一个对象的属性时,
    若属性存在,则直接返回属性值;
    若不存在,则会调用__get函数。

__set()
    设置一个对象的属性时,
    若属性存在,则直接赋值;
    若不存在,则会调用__set函数。

__toString()
    打印一个对象的时被调用。如echo $obj;或print $obj;

__clone()
    克隆对象时被调用。如:$t=new Test();$t1=clone $t;

__sleep()
    serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup()
    unserialize时被调用,做些对象的初始化工作。

__isset()
    检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset()
    unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()
    调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()
    实例化一个对象时,如果对应的类不存在,则该方法被调用。

以上就是本文的全部内容了,小伙伴们是否对魔术变量和魔术函数有了新的认识了呢,希望大家喜欢本文内容。

PHP 魔术变量和魔术函数详解_PHP教程

PHP 魔术变量和魔术函数详解_PHP教程

php 魔术变量和魔术函数详解

 这篇文章主要简单介绍了php 魔术变量和魔术函数,以及使用示例,方便我们学习理解php魔术变量和魔术函数,有需要的小伙伴参考下吧。

 

 

魔术变量

PHP 向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

立即学习“PHP免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

__LINE__

文件中的当前行号。

实例:

 

代码如下:


echo ''这是第 “ '' . __LINE__ . '' ” 行'';
?>

 

以上实例输出结果为:

 

代码如下:


这是第 “ 2 ” 行

 

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

实例:

 

代码如下:


echo ''该文件位于 “ '' . __FILE__ . '' ” '';
?>

 

以上实例输出结果为:

 

代码如下:


该文件位于 “ E:\wamp\www\test\index.php ”

 

__DIR__

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

它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

实例:

代码如下:


echo ''该文件位于 “ '' . __DIR__ . '' ” '';
?>

 

以上实例输出结果为:

 

代码如下:


该文件位于 “ E:\wamp\www\test ”

 

__FUNCTION__

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

实例:

 

代码如下:


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

 

以上实例输出结果为:

 

代码如下:


函数名为:test

 

__CLASS__

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

在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

实例:

 

代码如下:


class test {
function _print() {
echo ''类名为:'' . __CLASS__ . "
";
echo ''函数名为:'' . __FUNCTION__ ;
}
}
$t = new test();
$t->_print();
?>

 

以上实例输出结果为:

类名为:test
函数名为:_print

__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

 

代码如下:


class Base {
public function sayHello() {
echo ''Hello '';
}
}
{
public function sayHello() {
parent::sayHello();
echo ''World!'';
}
}
class MyHelloWorld extends Base {

}
$o = new MyHelloWorld();
$o->sayHello();
?>

 

以上例程会输出:

 

代码如下:


Hello World!

 

__METHOD__

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

实例:

 

复制代码 代码如下:


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

 

以上实例输出结果为:

 

代码如下:


函数名为:test

 

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

实例:

 

代码如下:


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

 

以上实例输出结果为:

 

代码如下:


命名空间为:"MyProject"

 

魔术函数

__construct()
实例化对象时被调用,
当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct()
当删除一个对象或对象操作终止时被调用。

__call()
对象调用某个方法,
若方法存在,则直接调用;
若不存在,则会去调用__call函数。

__get()
读取一个对象的属性时,
若属性存在,则直接返回属性值;
若不存在,则会调用__get函数。

__set()
设置一个对象的属性时,
若属性存在,则直接赋值;  
若不存在,则会调用__set函数。

__toString()
打印一个对象的时被调用。如echo $obj;或print $obj;

__clone()
克隆对象时被调用。如:$t=new Test();$t1=clone $t;

__sleep()
serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup()
unserialize时被调用,做些对象的初始化工作。

__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset()
unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。

以上就是本文的全部内容了,小伙伴们是否对魔术变量和魔术函数有了新的认识了呢,希望大家喜欢本文内容。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/960580.htmlTechArticlePHP 魔术变量和魔术函数详解 这篇文章主要简单介绍了PHP 魔术变量和魔术函数,以及使用示例,方便我们学习理解php魔术变量和魔术函数,...

我们今天的关于php魔术变量用法实例详解php魔术变量用法实例详解图的分享已经告一段落,感谢您的关注,如果您想了解更多关于PHP 魔术变量和魔术函数详解、PHP 魔术变量和魔术函数详解_PHP、PHP 魔术变量和魔术函数详解_php技巧、PHP 魔术变量和魔术函数详解_PHP教程的相关信息,请在本站查询。

本文标签: