Php 类似于_构造,但在类中的每个新调用函数上调用

Php 类似于_构造,但在类中的每个新调用函数上调用,php,function,class,Php,Function,Class,我有以下3个文件: controller.php 类注入{ 公共函数构造(){ 呼应‘我说’; } } model.php 类{ 公共函数init(){ 回声“你好”; $this->otherFunction(); } 公共函数otherFunction(){ //父项::_construct();-->不应手动添加此项 呼应“世界”; } } view.php $output=new say(); $output->init()//更新 如果不修改类“say”(我在上面做过)中的函数,

我有以下3个文件:

controller.php

类注入{
公共函数构造(){
呼应‘我说’;
}
}
model.php

类{
公共函数init(){
回声“你好”;
$this->otherFunction();
}
公共函数otherFunction(){
//父项::_construct();-->不应手动添加此项
呼应“世界”;
}
}
view.php

$output=new say();
$output->init()//更新
如果不修改类“say”(我在上面做过)中的函数,我希望每次调用函数init(),它都会生成“我说你好我说世界”。我怎么做到的


如果你真的需要这个,你应该考虑一下。这可以通过重载和使方法私有/受保护来实现

例如:

<?php

class Foo {
    public function __call($function, $arguments)
    {
        echo 'I chose ';
        $this->$function(...$arguments);
    }

    private function bar(): void
    {
        echo 'bar' . PHP_EOL;
    }

    private function baz(): void
    {
        echo 'baz' . PHP_EOL;
    }
}

$foo = new Foo();
$foo->bar();
$foo->baz();

如果希望在不修改类的情况下向类添加新功能,可以使用装饰器模式

<?php
class inject{
    public function __construct(){
        echo 'I say';
    }
}

class say extends inject{
    public function init(){
        echo ' hello ';
        $this->otherFunction();
    }
    public function otherFunction(){
        echo ' world ';
    }
}

class DecoratorSay extends say
{
    public function otherFunction() {
        parent::__construct();
        parent::otherFunction();
    }
}

$output = new DecoratorSay();
echo $output->init();

@如果我的问题没有关系,将调用或调用静态函数。然而,它有点像函数构造。虽然对每个创建的类调用_构造,但我希望对每个创建的函数调用类似于_构造的东西。那么,您有一个大问题,因为函数不是“创建的”…:D您也不需要“echo$output->init();”,你在这个函数中做回显我的道歉,我的意思是当函数called@Eakethet是的,这只是一个伪代码,所以我不用花很长时间就创建了它。lolHow如果我在bar()内调用baz(),但我希望结果是“我选择bar我选择baz”?那么你应该寻找不同的东西,而不是每次调用函数时都做一些事情。使用另一个函数,该函数将接收要在“I select”之后追加的字符串参数,并调用此函数$this->printOut('baz')等,而不是echo'baz'
I say hello I say world