本文目录一览:
- 1、php有没有办法获取函数的参数名
- 2、PHP里如何获取函数的调用者名称
- 3、php怎么获取父函数名
- 4、php有没有什么函数可以获取一个方法中的参数名和参数类型的
- 5、php如何调用函数
- 6、什么是PHP的函数?
php有没有办法获取函数的参数名
可以哦,使用 Reflection 反射函数,例子:
function a($b, $c)
{
return $b.$c;
}
$reflection = new \ReflectionFunction('a');
$parameters = $reflection-getParameters();
foreach ($parameters as $parameter) {
echo $parameter-name;
echo 'br';
}
输出 b , a
PHP里如何获取函数的调用者名称
先放上来别人的例子吧:
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
复制代码 代码如下:
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
复制代码 代码如下:
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
复制代码 代码如下:
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?
call_user_func_array函数也可以调用类内部的方法的
复制代码 代码如下:
Class ClassA
{
function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));
//显示 333
?
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
复制代码 代码如下:
function a($b)
{
$b++;
}
$c = 0;
call_user_func('a', $c);
echo $c;//显示 1
call_user_func_array('a', array($c));
echo $c;//显示 2
另:call_user_func函数和call_user_func_array函数都支持引用。
复制代码 代码如下:
?php
function increment($var)
{
$var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a; // 0
call_user_func_array('increment', array($a)); // You can use this instead
echo $a; // 1
?
php怎么获取父函数名
函数是没有父子关系的,所以无法获取父函数名。
对象具有父子关系,但是方法名称和父类的方法名称必然是同名的。
另一种可能是你想问谁调用的当前函数,可以打印堆栈信息。print_r(debug_backtrace());
php有没有什么函数可以获取一个方法中的参数名和参数类型的
/**
* 获取一个函数的依赖
* @param string|callable $func
* @param array $param 调用方法时所需参数 形参名就是key值
* @return array 返回方法调用所需依赖
*/
function getFucntionParameter($func,$param=[]) {
if(!is_array($param)) {
$param = [$param];
}
$ReflectionFunc = new \ReflectionFunction($func);
$depend = array();
foreach($ReflectionFunc-getParameters() as $value) {
if(isset($param[$value-name])) {
$depend[] = $param[$value-name];
}elseif($value-isDefaultValueAvailable()){
$depend[] = $value-getDefaultValue();
}else{
$tmp = $value-getClass();
if(is_null($tmp)) {
throw new \Exception("Function parameters can not be getClass {$class}");
}
$depend[] = $this-get($tmp-getName());
}
}
return $depend;
}
function test($a,$b=20) {
echo $a,',',$b;
}
$depend = getFucntionParameter('test',['a'=30,'b'=40]);
call_user_func_array('test',$depend); // 30,40
上面的函数是我开发的框架的容器的方法。
php提供了很完整的反射机制。不但可以反射函数,还可以反射方法,反射类构造函数。
php如何调用函数
PHP函数调用与Java/C/C++是一样的额,通过函数名(参数列表)就可以了,
举个栗子:
图中,有两处函数调用,一开始的session_start()是调用的PHP函数,validate_user($username, $password)是用户自定义函数,同样的方式调用。
什么是PHP的函数?
PHP 用户定义函数
除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
在 PHP 创建用户定义函数
用户定义的函数声明以关单 "function" 开头:
语法
function functionName() {
被执行的代码;
}
注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。
在下面的例子中,我们创建名为 "writeMsg()" 的函数。打开的花括号({)指示函数代码的开始,而关闭的花括号(})指示函数的结束。此函数输出 "Hello world!"。如需调用该函数,只要使用函数名即可:
?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 调用函数
?
PHP 函数参数
可以通过参数向函数传递信息。参数类似变量。
参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
下面的例子中的函数有一个参数($fname)。当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:
?php
function familyName($fname) {
echo "$fname Zhang.br";
}
familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?
下面的例子中的函数有两个参数($fname 和 $year):
?php
function familyName($fname,$year) {
echo "$fname Zhang. Born in $year br";
}
familyName("Li","1975");
familyName("Hong","1978");
familyName("Tao","1983");
?
PHP 默认参数值
下面的例子展示了如何使用默认参数。如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:
?php
function setHeight($minheight=50) {
echo "The height is : $minheight br";
}
setHeight(350);
setHeight(); // 将使用默认值 50
setHeight(135);
setHeight(80);
?
PHP 函数 - 返回值
如需使函数返回值,请使用 return 语句:
?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "br";
echo "7 + 13 = " . sum(7,13) . "br";
echo "2 + 4 = " . sum(2,4);
?