如何使用PHP为类创建函数升级

如何使用PHP为类创建函数升级,php,upgrade,Php,Upgrade,这是我的代码: Application.php文件: class Application { private $upgrade; public function __construct($upgrade = null) { if (!is_null($upgrade) && ($upgrade instanceof ApplicationUpgrade)) { $this->setUpgrade($upgrade)

这是我的代码:

Application.php文件:

class Application {

    private $upgrade;

    public function __construct($upgrade = null) {
        if (!is_null($upgrade) && ($upgrade instanceof ApplicationUpgrade)) {
            $this->setUpgrade($upgrade);

            if ($this->getUpgrade()->getVersion() > $this->getVersion()) {
                $this->getUpgrade()->upgrade();
            }
        }
    }

    public function getVersion() {
        return '1';
    }

    public function getUpgrade() {
        return $this->upgrade;
    }

    public function setUpgrade(ApplicationUpgrade $upgrade) {
        $this->upgrade = $upgrade;
    }

    public function sayHi($name) {
        echo 'Hi ' . $name . '!';
    }
}
文件ApplicationUpgrade.php:

class ApplicationUpgrade {

    public function getVersion() {
        return '1.1';
    }

    public function upgrade() {
        //code upgrade here...
    }

    public function sayHi($name) {
        echo 'Hi ' . $name . ', Method has been upgraded!';
    }
}
现在:


我想在升级之前,说一声“嗨,A!”升级后,sayHi返回“Hi A,方法已升级!”

你可以这样做,但我认为这是一个有点不好的做法,但不管怎样,你还是来吧

<?php
class Application {
    public function sayHi($name) {
       if($this->upgrade !== null) {
          $this->upgrade->sayHi($name);
       }
       else {
          echo 'Hi ' . $name . '!';
       }
    }
}

此外,我不会为了管理不同的版本而这样做,你们应该在谷歌搜索更好的解决方案,并做一些研究

你们是如何做到这一点的?我们喜欢看到在研究上的努力和不成功的尝试,而不仅仅是在社区中问“如何?”请更好地解释你的问题。我会在谷歌上找到解决方案,因为我不想更改类名。tks!
<?php
class Application {
    public function sayHi($name) {
       if($this->upgrade !== null) {
          $this->upgrade->sayHi($name);
       }
       else {
          echo 'Hi ' . $name . '!';
       }
    }
}
class Application {
  public function sayHi() {
    echo('hi version1');
  }
}

class ApplicationV2 extends Application {
  public function sayHi() {
    echo('hi version2');
  }
}

$app = new ApplicationV2();
$app->sayHi();