php 動(dòng)態(tài)執(zhí)行帶有參數(shù)的類方法
更新時(shí)間:2009年04月10日 19:43:40 作者:
PHP中,在事先知道類和類的方法名稱,使用call_user_func函數(shù)可以做動(dòng)態(tài)執(zhí)行。
官方手冊(cè)給出了以下范例:
<?php
// 使用了NameSpace的例子
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
// Hello world!
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
// Hello world!
?>
<?php
// 直接調(diào)用方法的例子
class myclass {
static function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3
?>
那么,如果是普通的方法,而且,方法帶有參數(shù)該怎么辦?
以下是筆者寫的一個(gè)小例子,供參考:
<?php
// 執(zhí)行帶有參數(shù)的類
class Loveapple{
public function sayHello($a, $b){
echo "Hello:".$a.". ".$b."\n";
}
}
$obj = new Loveapple();
//執(zhí)行結(jié)果 Hello:loveapple. Using instance.
call_user_func(array($obj, "sayHello"), "loveapple", "Using instance.");
//執(zhí)行結(jié)果 Hello:loveapple. Using class name.
call_user_func(array("Loveapple", "sayHello"), "loveapple", "Using class name.");
?>
復(fù)制代碼 代碼如下:
<?php
// 使用了NameSpace的例子
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
// Hello world!
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
// Hello world!
?>
復(fù)制代碼 代碼如下:
<?php
// 直接調(diào)用方法的例子
class myclass {
static function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3
?>
那么,如果是普通的方法,而且,方法帶有參數(shù)該怎么辦?
以下是筆者寫的一個(gè)小例子,供參考:
復(fù)制代碼 代碼如下:
<?php
// 執(zhí)行帶有參數(shù)的類
class Loveapple{
public function sayHello($a, $b){
echo "Hello:".$a.". ".$b."\n";
}
}
$obj = new Loveapple();
//執(zhí)行結(jié)果 Hello:loveapple. Using instance.
call_user_func(array($obj, "sayHello"), "loveapple", "Using instance.");
//執(zhí)行結(jié)果 Hello:loveapple. Using class name.
call_user_func(array("Loveapple", "sayHello"), "loveapple", "Using class name.");
?>
您可能感興趣的文章:
- php運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建函數(shù)的方法
- PHP使用方法重載實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建屬性的get和set方法
- PHP動(dòng)態(tài)創(chuàng)建Web站點(diǎn)的方法
- 用PHP動(dòng)態(tài)創(chuàng)建Flash動(dòng)畫
- PHP動(dòng)態(tài)地創(chuàng)建屬性和方法, 對(duì)象的復(fù)制, 對(duì)象的比較,加載指定的文件,自動(dòng)加載類文件,命名空間
- 一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)
- 如何使用動(dòng)態(tài)共享對(duì)象的模式來安裝PHP
- PHP通過反射動(dòng)態(tài)加載第三方類和獲得類源碼的實(shí)例
- PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕
- PHP使用GIFEncoder類生成的GIF動(dòng)態(tài)圖片驗(yàn)證碼
- PHP 動(dòng)態(tài)隨機(jī)生成驗(yàn)證碼類代碼
- php使用變量動(dòng)態(tài)創(chuàng)建類的對(duì)象用法示例
相關(guān)文章
PHP 過濾頁面中的BOM(實(shí)現(xiàn)代碼)
本篇文章是對(duì)PHP中過濾頁面中的BOM的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
支持漢轉(zhuǎn)拼和拼音分詞的PHP中文工具類ChineseUtil
本文給大家推薦的是一款PHP的中文分詞工具類,功能包括支持漢字轉(zhuǎn)拼音、拼音分詞、簡繁互轉(zhuǎn)。非常不錯(cuò),有需要的小伙伴可以參考下2018-02-02
PHP5.0~5.6 各版本兼容性cURL文件上傳功能實(shí)例分析
這篇文章主要介紹了PHP5.0~5.6 各版本兼容性cURL文件上傳功能,結(jié)合實(shí)例形式分析了php各個(gè)常見版本進(jìn)行curl文件上傳操作的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
php allow_url_include的應(yīng)用和解釋
PHP常常因?yàn)樗赡茉试SURLS被導(dǎo)入和執(zhí)行語句被人們指責(zé)。事實(shí)上,這件事情并不是很讓人感到驚奇,因?yàn)檫@是導(dǎo)致稱為Remote URL Include vulnerabilities的php應(yīng)用程序漏洞的最重要的原因之一。2010-04-04

