【问题标题】:Adding methods to existing class without much changes向现有类添加方法而无需太多更改
【发布时间】:2017-08-25 02:06:36
【问题描述】:

我需要将新方法包含到现有类中,而不需要对该类进行太多更改。我不知道该怎么做。由于我不能使用例如include_once('mynew.class.php') 然后在里面写我所有的新代码,我尝试了以下并且它有效。

我可以在 B 中添加新方法,它们是 A 的过程,正如我希望的那样。

class A extends B {
"the existing code"
}
class B {
 "my new code"
}

我认为这不是正确的方法,因为在这种情况下 B 应该有主逻辑,A 应该得到新代码,对吧?

我现在不知道如何在类中模拟 include 之类的东西。

当然,我可以在现有的 A 中编写我的新函数而无需继承,但在这种情况下,我想按照我解释的那样做,并且几乎不触及现有文件。

有什么建议吗?希望大家理解这个问题。

谢谢

【问题讨论】:

  • 你考虑过使用特征吗? php.net/manual/en/language.oop5.traits.php
  • 没有。我会仔细研究一下。所以这适合这类问题吗?我显然没有那么有经验...
  • 它基本上可以让您在类中重用(或在您的情况下包含)函数。它应该适合你。
  • 这似乎只是扩展了现有方法……有点重用它们?还是我错过了什么……我需要新的方法,不管现有的。对不起,如果我弄错了。
  • 检查我的代码示例

标签: php oop include extends


【解决方案1】:

尝试使用Trait。它基本上允许您在类中重用(或在您的情况下包含)函数。

代码示例

<?php
trait SayHello {
   public function sayHello() {
       echo 'Hello';
   }
}

class Base {
    use SayHello;
}

$o = new Base();
$o->sayHello();
?>

【讨论】:

  • 很好,很高兴它有帮助。
  • 再问一个问题...这个解决方案很有魅力,但我的第一种方法通常是错误的,或者你能做到这一点,而不会惹恼其他程序员吗?
  • 对于在类中插入更多函数的问题,它也应该可以工作,但更好的方法是让类B 具有继承类A 的新代码,然后使用类的对象B 您需要访问A 和/或B 的属性,因为B 是一个 A
猜你喜欢
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 2023-04-04
  • 1970-01-01
  • 2015-01-04
相关资源
最近更新 更多