PHP
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了基于PHP5魔术常量与魔术方法的详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1。__LINE__
返回
文件中的当前行号。
2。__FILE__
返回
文件的完整路径和
文件名。如果用在包含
文件中,则返回包含
文件名。自
PHP4.0.2 起,__FILE__总是包含
一个绝对路径,而
在此之前的版本有时会包含
一个相对路径。
3。__FUNCTION__
返回
函数名称(
PHP4.3.0 新加)。自
PHP5 起本常量返回该
函数被定义时的名字(区分大小写)。在
PHP4 中该值总是小写字母的。
4。__CLASS__
返回类的
名称(
PHP4.3.0 新加)。自
PHP5 起本常量返回该类被定义时的名字(区分大小写)。在
PHP4 中该值总是小写字母的。
5。__METHOD__
返回类的
方法名(
PHP5.0.0 新加)。返回该
方法被定义时的名字(区分大小写)。
函数:
1。__construct()
构造
函数: 实例化对象时被
调用,
当__construct和以类名为
函数名的构造
函数同时存在时,__construct将被
调用,另
一个不被
调用。
4。__get()
读取
一个对象的
属性时,若
属性存在,则直接返回
属性值;若不存在,则会
调用__get
函数。
5。__set()
设置
一个对象的
属性时,
若
属性存在,则直接赋值;
若不存在,则会
调用__
set函数。
6。__toString()
打印
一个对象的时被
调用。如echo$ob
j;或print$ob
j;7。__clone()
克隆对象时被
调用。如:$t=new
test();$t1=clone $t;
8。__sleep()
@R_
674_9464@lize之前被
调用。若对象比较大,想删减一点东东再序列化,可
考虑一下此
函数。
9。__wakeup()
un@R_
674_9464@lize时被
调用,做些对象的初始化工作。
10。__isset()
检测
一个对象的
属性是否存在时被
调用。如:isset($c->
Name)。
11。__unset()
unset
一个对象的
属性时被
调用。如:unset($c->
Name)。
12。__set_state()
调用var_export时,被
调用。用__set_state的返回值做为var_export的返回值。
实例化
一个对象时,如果对应的类不存在,则该
方法被
调用。
PHP5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术
方法,这些魔术
方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下
PHP5.0给我们提供的魔术
方法。
PHP| 魔术
方法|__to
String(),__clone(),__call(),_
_autoload() 详解
__to
String()
classPerson
{private $name = “”;
private $age = 0;
function__construct($name = “”,$age = “”)
{$this->name =$name;
$this->age = $age;
}
functionsay()
{echo“name:”.$this->name.”
”.”age:”.$this->age.”
”;
}
}
现在我去实例化这个类,然后去打印这个实
例:$p1= new person(“liuzy”,
20);echo $p1; //直接打印会出错
显然这样直接打印对象是
会出现错误的,因为对象是引用句柄,不能直接打印。这时,我们可以用到__to
String()
方法。我们在Person类里加
一个__to
String()
方法:
function__to
String()
{return “I am Person,my name is“.$this->name.”
”;
}
然后再刷新页面,发现什么了?
现在我们明白,__to
String()是在直接打印对象时执行的
方法,我们可以用该
方法打印类的一些相关信息。
方法必须有返回值。
__clone()
我们知道对象是可以直接赋
值的,比如
$p2= $p1; //这里是
一个对象有两个引用
那么我执行:
$p1->say(
);$p2->say(
);是都可以执行的,而且
效果一样。
$p3= clone $p1; //注意clone是克隆关键字,这里与上面的不同是$p3是
一个新的对象。
同时我们在类里加入
一个方法:
function__clone()
{$this->name = “我是副本”; //注意:这里的$this是克隆产生的对象本身,不是当前类
}
然后我们执行:
$p3->say(
);打印出:
name:我是副本
age:20
到这里我们明白,__clone()
方法是在克隆对象的时候执行的
方法,它的作用是对新克隆出来的副本进行
属性初始化等操作。
__call()
这个
方法的主要
功能是:在该类的实例
调用一个不存在的
方法时,执行该__call()
方法。注意需要提前在类里声明:
function__call($fname,$argus)
{echo “你
调用的
方法:”.$fname.”不存在
”;
echo“参数是”.print_r($argus
);}
_
_autoload()我们在平时
调用一个类的时候,必须要先将该类所在的
文件引入(include“xxx.
PHP”),如果我们在
一个页里
调用的类很多,那么我们不得不使用许多的include“xxx.
PHP”。显然这样很麻烦。
_
_autoload()方法可以帮我们
解决这个问题。比如我们将上面的那个Person类所在的
文件定义为Person_clas
s.PHP ,
再新建
一个PHP文件 test.
PHP,编辑
内容:
function __autoload($calss
Name){include $className.”_clas
s.PHP”; //看到这也许你就明白了吧?哈哈
}
$p= new Person(
“MIfan”,22
);$p->say(
);这样执行该test.
PHP页面就不
会出现错误了。
_
_autoload()方法是在生命不存在的类时
调用的
方法,它有
一个String类型的参数是声明该不存
在类的类名。
当然,类
文件的命名也是很有讲究的。最好是和类有关系,比如Person_clas
s.PHP大佬总结
以上是大佬教程为你收集整理的基于PHP5魔术常量与魔术方法的详解全部内容,希望文章能够帮你解决基于PHP5魔术常量与魔术方法的详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。