【问题标题】:Method overloading in a model of Yii frameworkYii框架模型中的方法重载
【发布时间】:2013-11-05 19:45:38
【问题描述】:

我想在 Yii 框架模型中重载两个方法。

在这里,我想说的是,就像在 Java 中一样,我们有方法重载的概念,这意味着方法具有相同的名称,但传递给该方法的参数数量不同。所以这些类似的概念可以应用在 PHP Yii 框架的模型类中。 在 Yii 模型类中,我想创建两个方法,例如,

public function test(){ 
   //method logic
}
public function test(int parameters){
  //method logic
}

可以这样创作吗?我收到类似“无法定义相同功能”的错误。

【问题讨论】:

  • PHP 不支持方法重载。我假设您的意思有所不同,但不清楚您想要实现什么。
  • 您可以使用代码来检测传递给您的方法的数据类型(或使用默认值来表示无参数),例如。 is_arrayis_object 等并提供正确的输出类型。这是我所知道的最接近 php 中方法重载的方法
  • 我认为您所说的不完全是方法重载,而是方法覆盖。因此,请让我们知道您的确切要求,或者以您认为想要的方式至少提供一些示例代码。当然,如果需要,我们可以帮助您更正它。
  • @bool.dev:很好的区别。当其他 PHPer 告诉我他们正在重载一个方法时,我踢了一只小狗。

标签: php yii


【解决方案1】:

PHP 不支持您所说的内容。您可以尝试使用function arguments 中的默认值。例如。

function foo($int_param = 0) // do something

您也可以使用func_get_args。您将函数定义为不接受参数,然后使用 func_get_args() 获取参数。

如果您尝试实现的功能之间没有太大差异,这些方法是合适的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多