PHP: 在类(class)中加载动态函数, 变量函数或半变量函数 variable function/method

最终实例在下方

以前用过cakephp, 他们的数据库查询还是蛮强大的, 后来好奇它的类的写法,比如:

Post->findByTitle('My First Blog Post');
$this->Author->findByLastName('Rogers');

 

  • findBy
  • string $value
  • findAllBy
  • string $value

findAllBy 或者 findBy 后面可以跟变量, 它大概的方法就是使用了三个核心内置函数: __call, method_exists() 和 call_user_func_array (或者call_user_func), 下面先讲解他们各自的含义和用法:

__call()

定义和用法

__call() 这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在或被权限控制中的方法,__call 方法将会被自动调用。

注:通常被称为魔法函数。

语法: __call(name, arguments)

参数 描述
name 方法名
arguments 传递的参数

例子

 ";
        echo '参数是:'.implode(', ', $arguments). "\n";
    }
}
$obj = new MyClass;
$obj->callMe('abc','123');

//运行结果:
//调用了方法:callMe
//参数是:abc,123

 

method_exists()

定义和用法

检查类的方法是否存在于指定的 object中。

语法: method_exists(object,method_name)

参数 描述
object 规定的对象示例或者类名。
method_name 规定的方法名。

例子

 

call_user_func()

定义和用法

调用指定函数,并传入参数。

语法

  1. call_user_func(callback, parameter)
参数 描述
callback 调用的函数名称
parameter 传入的参数

例子

 

call_user_func_array()

定义和用法

用一个数组作为参数调用一个回调函数·返回值为回调函数执行的结果或者为false

语法

  1. call_user_func_array(callback , param_arr)
参数 描述
callback 要调用的回调函数,可以是函数或者类方法
param_arr 传入的参数

 

点击阅读全文

 

更多参考:

php框架--php框架的连贯查询实现原理

PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别

PHP: 手把手编写自己的 MVC 框架实例教程

JavaScript使用PHP函数 PHP extensions in JavaScript

 

原文: PHP: 在类(class)中加载动态函数, 变量函数或半变量函数 variable function/method

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Php,/,Pear,/,Mysql,/,Node.js)