网络编程 
首页 > 网络编程 > 浏览文章

php 魔术方法详解

(编辑:jimmy 日期: 2024/11/20 浏览:3 次 )

从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。PHP 将所有以 _ _(两个下划线)开头的类方法保留为魔术方法。

__toString() 和__invoke()

public string __toString ( void ):当对象被当做string使用时,这个方法会被自动调用。此方法必须返回一个字符串

复制代码 代码如下:
<"hello world!";
        }
    }
    $obj = new Magic();
    echo $obj;//hello world!
"codetitle">复制代码 代码如下:
<"hello world!";
        }
        public function __invoke($x){
            echo "__invoke called with param ".$x."\n";
        }
    }
    $obj = new Magic();
    $obj(10);//__invoke called with param 10
"codetitle">复制代码 代码如下:
<"Calling " . $name ." with param: ".implode(", ",$arguments)."\n";
        }
    }
$obj = new Magic();
$obj->run("para1","para2");//obj去调用run方法,输出:Calling run with param: para1, para2  
"codetitle">复制代码 代码如下:
<"Getting the property " . $name;
    }
}
$obj = new Magic();
echo $obj->className."\n";//Getting the property className
"codetitle">复制代码 代码如下:
<"Setting the property " . $name ."to value ". $value ."\n";
    }
}
$obj = new Magic();
$obj->className = 'MagicClass';//Setting the property classNameto value MagicClass
"codetitle">复制代码 代码如下:
<"__isset invoked\n";
        return true;
    }
}
$obj = new Magic();
echo '$obj->className is set"\n";//__isset invoked     $obj->className is set?1
?>

以上便是8个php面向对象的魔术方法的介绍与示例,希望对大家能有所帮助

上一篇:浅谈PHP解析URL函数parse_url和parse_str
下一篇:php多个文件及图片上传实例详解