PHP Import Foreign Class'方法到MyClass

2024-09-29 23:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

想知道这在PHP领域是否可行:

假设我有一个类,如下所示:

class myClass{
  var $myVar;
    ...
  myMethod(){
      $this->myVar = 10;
  }
}

还有另一门课:

^{pr2}$

“anotherClass”有3500行长,我只想在myClass中使用一个'addFive'方法。在

  • 有没有一种方法可以导入函数并在类中调用它,$this将引用myClass对象?在
  • 这是好的/坏的做法吗?在
  • (可选)这在Python中是如何工作的?(就在我开始学习Python的时候很好奇)

Tags: 对象方法函数varmyclassthis领域class
3条回答

更好的方法是将复杂方法移动到它自己的类中。然后两个类都可以实例化它,传递任何必要的数据,并调用该方法。在

最简单的方法是让一个类扩展另一个类

class myClass extends anotherClass {
}

myClass类现在可以访问其他类的所有公共或受保护的方法。在

如果您只希望类具有另一个类的一个方法,或者让一个类从另一个类扩展是不实际的,那么PHP中没有任何东西允许您这样做。你在Google上寻找的概念是“Mixin”,就像一个类与另一个类的功能混合一样。在一些模式上有一个article or two,你可以尝试在PHP中实现这个功能,但我自己从来没有尝试过。在

好主意/坏主意?一旦你掌握了这项技术,它会很方便和有用,但是会降低你的性能,让新手更难摸索出你在用你的代码做什么,尤其是(但不限于)对OO概念不太熟悉的人。在

如果您的myClass extends另一个类,它将继承另一个类的所有方法和属性(标记为private的除外)。在

class AnotherClass {
  protected $myVar;
  public function addFive(){
    $this->myVar += 5;
  }
}

class MyClass extends AnotherClass {
  public function __construct() {
    $this->myVar = 0;
  }

  public function myMethod(){
    $this->myVar = 10;
  }
}

$m = new MyClass;
$m->myMethod();
$m->addFive();
var_dump($m);

印刷品

^{pr2}$

相关问题 更多 >

    热门问题