php 動(dòng)態(tài)執(zhí)行帶有參數(shù)的類(lèi)方法
更新時(shí)間:2009年04月10日 19:43:40 作者:
PHP中,在事先知道類(lèi)和類(lèi)的方法名稱(chēng),使用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ù)該怎么辦?
以下是筆者寫(xiě)的一個(gè)小例子,供參考:
<?php
// 執(zhí)行帶有參數(shù)的類(lèi)
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ù)該怎么辦?
以下是筆者寫(xiě)的一個(gè)小例子,供參考:
復(fù)制代碼 代碼如下:
<?php
// 執(zhí)行帶有參數(shù)的類(lèi)
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)畫(huà)
- PHP動(dòng)態(tài)地創(chuàng)建屬性和方法, 對(duì)象的復(fù)制, 對(duì)象的比較,加載指定的文件,自動(dòng)加載類(lèi)文件,命名空間
- 一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(lèi)(類(lèi)似PHP的stdClass)
- 如何使用動(dòng)態(tài)共享對(duì)象的模式來(lái)安裝PHP
- PHP通過(guò)反射動(dòng)態(tài)加載第三方類(lèi)和獲得類(lèi)源碼的實(shí)例
- PHP使用GIFEncoder類(lèi)生成gif動(dòng)態(tài)滾動(dòng)字幕
- PHP使用GIFEncoder類(lèi)生成的GIF動(dòng)態(tài)圖片驗(yàn)證碼
- PHP 動(dòng)態(tài)隨機(jī)生成驗(yàn)證碼類(lèi)代碼
- php使用變量動(dòng)態(tài)創(chuàng)建類(lèi)的對(duì)象用法示例
相關(guān)文章
PHP中集成PayPal標(biāo)準(zhǔn)支付的實(shí)現(xiàn)方法分享
前兩天一個(gè)客戶(hù)需要在網(wǎng)站上集成PayPal支付功能,查了一下資料,簡(jiǎn)單記錄如下2012-02-02PHP基于curl post實(shí)現(xiàn)發(fā)送url及相關(guān)中文亂碼問(wèn)題解決方法
這篇文章主要介紹了PHP基于curl post實(shí)現(xiàn)發(fā)送url及相關(guān)中文亂碼問(wèn)題解決方法,結(jié)合具體實(shí)例形式分析了php使用curl實(shí)現(xiàn)post數(shù)據(jù)發(fā)送及content-type相關(guān)設(shè)置操作技巧,需要的朋友可以參考下2017-11-11總結(jié)PHP刪除字符串最后一個(gè)字符的三種方法
這篇文章為大家講解的是php實(shí)現(xiàn)如何去掉字符串的最后一個(gè)字符的多種方法,感興趣的同學(xué)參考下。下面來(lái)一起看看。2016-08-08PHP與MySQL開(kāi)發(fā)的8個(gè)技巧小結(jié)
LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開(kāi)發(fā)的相對(duì)較少,因?yàn)樽约簭氖麻_(kāi)發(fā)也少??戳艘院?,頗有啟發(fā),以前開(kāi)發(fā)中遇到的一些問(wèn)題,迎刃而解。所以翻譯出來(lái)和大家共享。2010-12-12如何使用Serializable接口來(lái)自定義PHP中類(lèi)的序列化
這篇文章主要介紹了如何使用Serializable接口來(lái)自定義PHP中類(lèi)的序列化,幫助大家更好的理解和學(xué)習(xí)使用PHP,感興趣的朋友可以了解下2021-04-04php mssql 數(shù)據(jù)庫(kù)分頁(yè)SQL語(yǔ)句
php mssql幾條常見(jiàn)的數(shù)據(jù)庫(kù)分頁(yè) SQL 語(yǔ)句2008-12-12