This has got to be one of the most frequently updated PHP sites, keep up the good work... 这是最频繁更新的PHP网站之一,保持了良好的工作......”
马克斯

功能参数

在PHP中,允许您将参数传递给函数通常配置的功能,改变方式,它会回应。

函数的默认参数

然而,有几个选项如何在PHP中处理函数的参数。 首先是在函数声明的参数,它定义了默认值的默认设置。

在PHP中没有选择执行功能超载但是这可以在一定程度上可以使用同样的效果。

An example of Method overloading in C # / /方法的一个例子,重载在C#
string username )公共无效ADDUSER(字符串的用户名
{
string username , GeneratePassword ( ) ) ; ADDUSER(字符串的用户名,GeneratePassword());
}

string username , string password )公共无效ADDUSER(username字符串字符串密码
{
string username , string password , " Default " , " User " ) ; ADDUSER(用户名字符串字符串密码,“默认”,“用户”);
}

string username , string password , string firstname , string lastname ) ADDUSER公共无效字符串的用户名密码串串名字字符串姓氏
{
/ *
*
* /
}
An example of parameter defaults in PHP / /一个例子PHP中的参数默认

AddUser ( $ username , $ password , $ firstname = " Default " , $ lastname = " User " )公共的功能ADDUSER($用户名$密码名字=“默认”,$姓氏=“用户”)
{
/ *
*
* /
}

正如你可以看到,我是无法在C#中添加许多默认的方法。 这是因为当一个默认的参数定义了唯一不变的值,所以不变量或函数允许使用。

AddRole ( $ role = ' default ' , $ user_id ) 功能AddRole($角色=“默认”,$ USER_ID)
{
/ *
*
* /
}

12 ) ; AddRole(12);

因此,当上述功能的作用,被称为未指定只是$ USER_ID unfortunatley这将导致错误将通过12元的作用的参数$ user_id的不确定离开。

另外一个指定的默认​​函数参数应该总是在函数的参数列表结束。 此外,如果你想一个参数指定几个拖欠的参数范围内,以及领导到指定的参数的参数必须provieded。 可以看出,参数$ role_type

AddRoleDetails ( $ role = ' default ' , $ user_id , $ description = ' Default details ' , $ role_type = ' Normal ' , $ role_admin = " Default " ) 功能AddRoleDetails(角色='默认',user_id美元 美元描述=“默认细节”,role_type $ ='正常',$ role_admin =“默认”)
{
/ *
*
* /
}

' default ' , 12 , ' Default details ' , ' High ' ) ; AddRoleDetails(“默认”,12“,默认细节','');

功能与可变数目的参数

功能可以通过在PHP可变数目的参数

AddTemplate ( )公共职能AddTemplate()
{
args = func_get_args ( ) ; $ ARGS = func_get_args()以;
}

func_get_args()以函数的所有参数传递给一个函数作为数组返回。 有时它是您预期的最低数量的参数被传递给函数和func_num_args()可以使用,以确保有正确数量的参数。

你可以混合和匹配与设定的参数列表可变长度参数列表...

AddTemplate ( $ templateName )公共职能AddTemplate($ TEMPLATENAME)
{
params = func_get_args ( ) ; 美元的params = func_get_args()以;
}

unfortunatley这将意味着你可以直接访问变量$ TEMPLATENAME通过美元的params。 不过,这是更好地从参数列表中删除$ TEMPLATENAME。 像这样...

AddTemplate ( $ templateName )公共职能AddTemplate($ TEMPLATENAME)
{
params = func_get_args ( ) ; 美元的params = func_get_args()以;
$ params [ 0 ] ) ;未设置 美元的params [0]);
}

请注意,是为了定义的参数,在参数列表数组。 这是为什么美元TEMPLATENAME的值是阵列中的任何其他变量先。

AddTemplate ( )公共职能AddTemplate()
{
func_num_args ( ) < 1 ) (func_num_args()<1)
{
Exception ( " You need to add more parameters to this function ! " ) ;抛出新的异常(“您需要添加更多的参数,此功能!”);
}
args = func_get_args ( ) ; $ ARGS = func_get_args()以;
}

你也可以在参数列表中的特定位置使用func_get_arg()函数的参数。 只需通过一个整数,指示要使用的功能和它只会返回该值的参数的索引位置。

" Chris " , " Sarah " , " Jane " ) ; AddPeople(“克里斯”,“莎拉”,“”);
AddPeople ( ) 功能AddPeople()
{
func_get_arg ( 1 ) ; “回声func_get_arg(1);
}

因此,上面的例子将返回“莎拉”。


已提供任何意见。
安全形象
书面由多米尼克·斯金纳
最后更新:2011年10月25日十六点00分38秒