public function query($queryString, $class = null) //second arg. is optional
{
$query = $this->dbLink->prepare($queryString);
$query->execute();
//if there is second argument method does different thing
if (!is_null($class)) {
$query->setFetchMode(PDO::FETCH_CLASS, $class);
}
return $query->fetchAll();
}
//This loads rows in to array of class
$Result = $this->query($queryString, "SomeClass");
//This loads rows as standard arrays
$Result = $this->query($queryString);
9条答案
按热度按时间yyhrrdl81#
不能重载PHP函数。函数签名仅基于它们的名称,不包括参数列表,因此不能有两个同名函数。PHP中的类method overloading与许多其他语言中的类不同。PHP使用相同的词,但它描述不同的模式。
然而,你可以声明一个variadic function,它接受可变数量的参数,你可以使用
func_num_args()
和func_get_arg()
来获取参数,并正常使用它们。例如:
4zcjmb1e2#
PHP不支持传统的方法重载,但是有一种方法可以达到你的目的,那就是使用
__call
魔术方法:bzzcjhmw3#
要重载一个函数,只需默认将参数作为null传递,
lndjwyie4#
对某些人来说,这可能有些笨拙,但我是从Cakephp如何执行某些功能中学习到这一点的,并对其进行了调整,因为我喜欢它所创造的灵活性
这个想法是你有不同类型的参数,数组,对象等,然后你检测你传递了什么,并从那里去
5us2dqdw5#
vltsax256#
在PHP 5.6中,您可以使用splat操作符
...
作为最后一个参数,而不用使用func_get_args()
和func_num_args()
:您也可以使用它来解压缩参数:
相当于:
0x6upsns7#
这个怎么样
pkbketx98#
bjp0bcyl9#
遗憾的是,PHP中没有重载,因为它在C#中是这样做的。但我有一个小技巧。我用默认空值声明参数,并在函数中检查它们。这样我的函数就可以根据参数做不同的事情。下面是一个简单的例子: