一种方法是通过 ajax POST 或 GET 传递类名、构造函数参数、方法名和参数等,例如:
var url = 'callMethod.php';
var data = {
str_className: 'Hello',
arr_consArgs: {arg1: 'test1'},
str_methodName: 'test'
};
$.post(url, data, function(response) {
etc.
});
在名为的 PHP 脚本中callMethod.php
:
/* Place your 'Hello' class here */
// class
$str_className = !empty($_POST["str_className"]) ? $_POST["str_className"] : NULL;
if ($str_className) {
// constructor
$arr_consArgs = !empty($_POST["arr_consArgs"]) ? $_POST["arr_consArgs"] : array();
// method
$str_methodName = !empty($_POST["str_methodName"]) ? $_POST["str_methodName"] : NULL;
if (!empty($str_methodName)) {
$arr_methodArgs = !empty($_POST["arr_methodArgs"]) ? $_POST["arr_methodArgs"] : array();
}
// call constructor
$obj = fuNew($str_className, $arr_consArgs);
// call method
$output = NULL;
if (!empty($str_methodName))
$output .= call_user_func_array(array($obj, $str_methodName), $arr_methodArgs);
// echo output
echo $output;
}
在哪里:
function fuNew($classNameOrObj, $arr_constructionParams = array()) {
$class = new ReflectionClass($classNameOrObj);
if (empty($arr_constructionParams))
return $class->newInstance();
return $class->newInstanceArgs($arr_constructionParams);
}