PHP中的魔术变量小结
PHP中,有不少很好用的魔术变量,用好之,能事半功倍,下面小结之:
1 _LINE_
显示当前代码的行数:
echo "This is line number : ". __LINE__;
2 _FILE_
显示当前文件的路径
3 _METHOD_
显示当前方法的名,比如
class Magicconstant
{
function __construct()
{
echo "This is function a";
}
function b()
{
echo "
";
echo "This is function b";
echo "
";
echo __METHOD__;
}
}
$cm = new Magicconstant();
$cm->b();
显示
This is function a
This is function b
Magicconstant::b
4 _FUNCTION_
显示当前所在函数的名
function b()
{
echo "
";
echo "This is function b";
echo "
";
echo __FUNCTION__;
}
输出:
This is function b
Magicconstant::b
5 _DIR_
显示当前目录名,如
echo "The directory name is : ". __DIR__;
输出:
The directory name is : D:\wamp\www
6 _CLASS_
显示当前的类
class Magicconstant
{
function __construct()
{
echo "The class name is : ".__CLASS__;
}
}
$cm = new Magicconstant();
显示:
The class name is : Magicconstant
7 _NAMESPACE_
显示当前命名空间
namespace MagicConstant
{
echo "The namespace is : ".__NAMESPACE__;
}
输出:
The namespace is : MagicConstant
8 _sleep_
_sleep_用在将类序列化之前,
class User
{
public $userName = '';
public $userAddress = '';
public $userPhone = '';
public function setName($name='')
{
$this->userName = $name;
}
function setAddress($address='')
{
$this->userAddress = $address;
}
function setPhone($phone='')
{
$this->userPhone = $phone;
}
function __sleep()
{
return array('userAddress','userPhone');
// This will serialize only address and Phone number but not Name
}
}
?>
$User = new User();
$User->setName('Avinash');
$User->setAddress('Address Here');
$User->setPhone('1234567890');
$serialData = serialize($User);
echo $serialData;
?>
OutPut: O:4:"User":2:{s:11:"userAddress";s:12:"Address Here";s:9:"userPhone";s:10:"1234567890";}
程序运行时, serialize() 检查类中是否有 __sleep() ,如果有,则该函数将在任何序列化之前运行. 该函数必须返回一个需要进行序列化保存的成员属性数组,并且只序列化该函数返回的这些成员属性. 该函数有两个作用: 第一. 在序列化之前,关闭对象可能具有的任何数据库连接等. 第二. 指定对象中需要被序列化的成员属性,如果某个属性比较大而不需要储存下来,可以不把它写进__sleep()要返回的数组中,这样该属性就不会被序列化
又如:
class Test {
public $mySecret; //我的秘密不想让人知道
public function __construct($secret) {
$this->mySecret = $secret;
}
public function __sleep() {
$this->mySecret = "你休想知道我的秘密!";
return array('mySecret'); //一定要返回变量,不然返回的是个空,所以序列化也就没有东西了。
}
}
$test = new Test("我的心里话 我爱某某某");
echo serialize($test); //输出 O:4:"Test":1:{s:8:"mySecret";s:28:"你休想知道我的秘密!";}
_wakeup_
用在反序列化时:
class User
{
public $userName = '';
public $userAddress = '';
public $userPhone = '';
public function setName($name='')
{
$this->userName = $name;
}
function setAddress($address='')
{
$this->userAddress = $address;
}
function setPhone($phone='')
{
$this->userPhone = $phone;
}
function __sleep()
{
return array('userAddress','userPhone');
// This will serialize only address and Phone number but not Name
}
function __wakeup()
{
echo "In Wakeup function"."
";
}
}
?>
$User = new User();
$User->setName('Avinash');
$User->setAddress('Address Here');
$User->setPhone('1234567890');
$serialData = serialize($User);
echo $serialData;
echo "
";
var_dump(unserialize($serialData));
?>
Output:
In Wakeup function
object(User)#2 (3) {
["userName"]=>
string(0) ""
["userAddress"]=>
string(12) "Address Here"
["userPhone"]=>
string(10) "1234567890"
}
0
0
相关文章
如何从PHP中调用Python文件?
我们如何使用使用mysql_fetch_assoc()函数的PHP脚本来显示MySQL表中的所有记录?
ini_set()在PHP中的作用是什么?
在PHP中的readlink()函数
我们如何编写PHP脚本来释放与MySQL结果关联的游标内存?
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。
53
2026.02.02
本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。
13
2026.02.02
本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。
8
2026.02.02
本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。
3
2026.02.02
本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。
4
2026.02.02
热门下载
相关下载
精品课程
共4课时 | 0.4万人学习
共22课时 | 3.6万人学习
最新文章





