在创建对象OOP PHP之后添加参数

时间:2015-08-20 22:25:40

标签: php oop

REVISED

我有一个简单的问题,但对OOP不熟悉我不确定这是否可行。

目前我有一个类,其中一个函数接受一个参数。 实际功能的作用是无关紧要的。

<?php
class Method {

    public function show($parameter){
        echo $parameter;
    }

}
?>

我创建这样的对象......

$this->Method = new Method();

并像这样使用它......

$this->Method->show($parameter);

所以问题是,我的功能是否可以通过简化使用的方式进行设置 此...

$this->Method($parameter);

我尝试将函数更改为__construct并使用上面的代码行,但由于new Method()创建时没有指定$parameter,因此失败了。

我希望能够在调用$parameter之后通过new Method();

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。如果向类中添加__invoke()方法,则可以像调用方法一样调用该类的实例。

class Method {
    public function __invoke($param) {
        echo $param;
    }
}

然后你可以按照你想要的方式在课堂上使用它

$this->Method = new Method;
$this->Method('something');  // echos something

如果您仍想使用show方法(或实际上的任何方法),您可以将其保留在那里,只需在__invoke中调用它。

class Method {
    public function show($param) {
        echo $param;
    }
    public function __invoke($param) {
        $this->show($param);
    }
}

另一种可能性,因为看起来你想要能够像使用函数一样使用对象,就是定义trait并在当前具有{{1}的对象中使用它而不是使用Method类。如果你创建了一个特征:

Method

然后在需要使用trait CanUseMethod { public function Method ($parameter) { echo $parameter; } } 的课程中,而不是

Method

你可以使用这样的特性:

$this->Method = new Method;

然后,您的class Example { use CanUseMethod; } 课程就可以在不创建新对象的情况下使用Example