如何使用PHP为类创建函数升级
这是我的代码: Application.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)
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();