PHP中不同类之间函数式调用对象与同类中对象的函数式使用
2012-03-03 13:08
274 查看
使用魔术方法__call可以实现对象间的函数式调用(以数组形式传递),也可以直接在本对象中使用__invoke(类似函数)。
<?php
class class1{
var $a;
function __call($name,$u){
if(class_exists($name))
$a=new class2();
return $a->__input($u[0]);
}
}
class class2{
function __construct(){
echo "对象已经建立"."<br>";
}
function __input($u){
if($u<5)
echo "小于5"."<br>";
else
echo "大于或等于5"."<br>";
}
function __invoke($k){
if($k<5)
echo "小于5"."<br>";
else
echo "大于或等于5"."<br>";
}
function __destruct(){
echo "对象已经销毁"."<br>";
}
}
$e=new class1();
$e->class2(2);
$e=null;
$e=new class2();
$e(9);
?>
调试结果为:
对象已经建立
小于5
对象已经销毁
对象已经建立
大于或等于5
对象已经销毁
总结:实现了不同对象的函数式调用,类的自动加载,也可用函数方法使用单独的类。
<?php
class class1{
var $a;
function __call($name,$u){
if(class_exists($name))
$a=new class2();
return $a->__input($u[0]);
}
}
class class2{
function __construct(){
echo "对象已经建立"."<br>";
}
function __input($u){
if($u<5)
echo "小于5"."<br>";
else
echo "大于或等于5"."<br>";
}
function __invoke($k){
if($k<5)
echo "小于5"."<br>";
else
echo "大于或等于5"."<br>";
}
function __destruct(){
echo "对象已经销毁"."<br>";
}
}
$e=new class1();
$e->class2(2);
$e=null;
$e=new class2();
$e(9);
?>
调试结果为:
对象已经建立
小于5
对象已经销毁
对象已经建立
大于或等于5
对象已经销毁
总结:实现了不同对象的函数式调用,类的自动加载,也可用函数方法使用单独的类。
相关文章推荐
- PHP中不同类之间函数式调用对象与同类中对象的函数式使用
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 使用DLL进行不同语言之间的调用
- 使用DLL进行不同语言之间的调用
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 使用DLL进行不同语言之间的调用(转)
- 使用DLL进行不同语言之间的调用
- 使用ArrayList集合,对其添加100个不同的元素: 1.使用add()方法将元素添加到ArrayList集合对象中; 2.调用集合的iterator()方法获得Iterator对象,并调用Ite
- PHP数组与对象之间使用递归实现转换的方法
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 使用DLL进行不同语言之间的调用
- PHP数组与对象之间使用递归实现转换的方法
- 使用iframe的父子窗口之间的对象相互调用
- 使用COM方式实现不同语言之间的调用
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- 使用ArrayList集合,对其添加100个不同的元素: 1.使用add()方法将元素添加到ArrayList集合对象中; 2.调用集合的iterator()方法获得Iterator对象,并调用Ite
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例