【发布时间】:2011-12-07 01:08:28
【问题描述】:
我可以让两个方法共享相同的名称但使用不同的参数吗?
一个是public static,需要2个参数,另一个是public,只需要一个参数
例子
class product{
protected
$product_id;
public function __construct($product_id){
$this->product_id = $product_id;
}
public static function getPrice($product_id, $currency){
...
}
public function getPrice($currency){
...
}
}
【问题讨论】:
-
据我了解,PHP 不支持多个方法签名。
-
只有利用
__call和__callStatic处理程序并自己实现签名处理。仍然需要两个不同的真实方法名称。 -
所以 __call 在对象上下文中调用函数时运行,而当函数像 class::function 一样调用时运行 __callStatic?我可以这样做,但我不知道如何确定每种方法的参数数量,因为我会有多种此类方法,而不仅仅是两个 :) 其中一些采用 3-4 个参数......