【问题标题】:exposing functions within functions在函数中公开函数
【发布时间】:2018-03-16 08:43:21
【问题描述】:

我需要一些帮助。我正在开发一个更大的 php 应用程序,并在这个框架中使用不同类型的函数。

但我不知道最佳实践是如何制作一个包含不同函数的函数,但这些函数在不同的文件中分开以便于分类。

让我展示我想要的,我只想调用一个简单的函数,然后在其中公开不同的函数。像这样

$input = app::getInput();
$input->filter('this string');
$input->validate('other string');

但是在不同的文件中有这些不同的功能。 现在我正在这样做,但我认为这不是最佳做法,我不知道如何做得更好。

file: app.php
class app {
    public static function getInput {
        return new Input;
    }
}


file: inputFilter.php
abstract class InputFilter {
    public function filter() {
    }
}

file: inputValidate.php
abstract class InputValidate extends InputFilter {
    public function validate() {
    }
}

file: inputHelper.php
class Input extends InputValidate {
    public function someorhterfunction(){
    }
}

这将公开上面示例中要使用的函数,但是我如何产生相同的结果,而不必每次我想给输入一个新函数时都扩展类?

希望这是有道理的......

编辑:好的,缺少一点是因为我希望能够扩展 InputValidateInputFilter 以提供更多功能。

【问题讨论】:

  • 为什么要这样做?我真的看不出任何意义。在基类中声明所有这些抽象函数并从中扩展不是更有意义吗?
  • 无论如何,Input 不是InputValidate。从另一个类扩展一个类必须尊重它们之间的语义“is-a”关系。您可以改为使用相应的方法创建单独的类,例如InputValidator 等,这些方法可以接收输入(值)作为参数。

标签: php function class


【解决方案1】:

只做一堂大课Input:

class Input {
    public function filter($param) {}
    public function validate($param) {}
    public function someotherfunction() {}
}

只要你不认为,你会有其他类扩展InputValidateInputFilter就没有问题。

【讨论】:

  • 是的,但这就是我问的原因,因为我计划用更多功能扩展 InputValidate,并让它们公开使用。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多