- 浏览: 7865430 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
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 "<br/>";
echo "This is function b";
echo "<br/>";
echo __METHOD__;
}
}
$cm = new Magicconstant();
$cm->b();
显示
This is function a
This is function b
Magicconstant::b
4 _FUNCTION_
显示当前所在函数的名
function b()
{
echo "<br/>";
echo "This is function b";
echo "<br/>";
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_用在将类序列化之前,
<?php
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
}
}
?>
<?php
$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_
用在反序列化时:
<?php
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"."<br/>";
}
}
?>
<?php
$User = new User();
$User->setName('Avinash');
$User->setAddress('Address Here');
$User->setPhone('1234567890');
$serialData = serialize($User);
echo $serialData;
echo "<br/>";
var_dump(unserialize($serialData));
?>
Output:
In Wakeup function
object(User)#2 (3) {
["userName"]=>
string(0) ""
["userAddress"]=>
string(12) "Address Here"
["userPhone"]=>
string(10) "1234567890"
}
1 _LINE_
显示当前代码的行数:
echo "This is line number : ". __LINE__;
2 _FILE_
显示当前文件的路径
3 _METHOD_
显示当前方法的名,比如
class Magicconstant
{
function __construct()
{
echo "This is function a";
}
function b()
{
echo "<br/>";
echo "This is function b";
echo "<br/>";
echo __METHOD__;
}
}
$cm = new Magicconstant();
$cm->b();
显示
This is function a
This is function b
Magicconstant::b
4 _FUNCTION_
显示当前所在函数的名
function b()
{
echo "<br/>";
echo "This is function b";
echo "<br/>";
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_用在将类序列化之前,
<?php
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
}
}
?>
<?php
$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_
用在反序列化时:
<?php
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"."<br/>";
}
}
?>
<?php
$User = new User();
$User->setName('Avinash');
$User->setAddress('Address Here');
$User->setPhone('1234567890');
$serialData = serialize($User);
echo $serialData;
echo "<br/>";
var_dump(unserialize($serialData));
?>
Output:
In Wakeup function
object(User)#2 (3) {
["userName"]=>
string(0) ""
["userAddress"]=>
string(12) "Address Here"
["userPhone"]=>
string(10) "1234567890"
}
发表评论
-
11个php日常用的小tips 代码片段
2014-01-21 20:34 1896http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3483php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1878偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2937今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1447$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2064php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19151 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2849介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4492在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1635原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1813经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4547在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
PHP 5.4中的traits初探
2012-04-01 19:57 5018PHP 5.4中的traits,是新引入的特性,中文还真不知道 ... -
php中的pdo和mysqli的对比选择
2012-03-10 22:25 7124在PHP中,如何选择PDO和mysqli呢?本文做个简单的 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3930在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1790php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2280今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4210cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 51931 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1929在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ...
相关推荐
PHP 魔术变量和魔术函数详解_.docx
本文实例讲述了PHP中魔术变量__METHOD__与__FUNCTION__的区别,分享给大家供大家参考。具体分析如下: __METHOD__类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 __FUNCTION__函数名称...
本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下: PHP 预定义了一些变量、常量、方法,使用起来很方便,例如直接使用 __DIR__ 获取当前文件所在的目录。 下面分别详细介绍一下 PHP...
本文实例讲述了php魔术变量用法,其中__DIR__是php5.3新增的,分享给大家供大家参考。具体用法分析如下: 系统常量 __FILE__ 当前文件名 __LINE__ 当前行数 __FUNCTION__ 当前函数名 __CLASS__ 当前类名 __METHOD__ ...
魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八个魔术常量它们的值随着...
本篇文章是对php魔术方法与魔术变量、内置方法与内置变量进行了详细的分析介绍,需要的朋友参考下
在存在这么一个变量 tt, 它满足下面的代码. 代码执行完毕后 ,errCount=0 而且 断言函数也从未 alert 信息 代码如下: 代码如下:[removed] var tt=/* 请在这里定义tt */; var errCount=0 //全局变量,...
魔术方法:魔术函数是PHP中内置的语言特性,当程序执行到某种情况时,如果定义了这些魔术函数 (php手册中称之为“Overloading”),则PHP会调用他们,同时也会传入相应的参数,可以认为是PHP执行过程中的钩子函数
php 魔术函数和常量一览表
魔术贴网站源码PHP源码.zip
关于魔术中的物理知识的研究报告.doc
一个 面向对象 的 魔术纸牌 小程序 挺有意思的。可以看一看!
常用的php魔术常量和魔术函数,有时候使用魔术函数挺方便的。
光影魔术手光光影魔术手光影魔术手光影魔术手影魔术手光影魔术手
魔术远控免费1.7魔术远控免费1.7魔术远控免费1.7魔术远控免费1.7魔术远控免费1.7魔术远控免费1.7魔术远控免费1.7