想知道这是否可以在PHP Land中使用:
假设我有一个课程如下:
class myClass{
var $myVar;
...
myMethod(){
$this->myVar = 10;
}
}
和另一个班级:
class anotherClass {
...
addFive(){
$this->myVar += 5;
}
}
'anotherClass'是3500行,我只想在myClass中使用单个'addFive'方法。
答案 0 :(得分:2)
更好的方法是将复杂方法移动到自己的类中。然后你的两个类都可以实例化它,传递任何必要的数据,然后调用方法。
答案 1 :(得分:2)
最简单的方法是让一个类扩展另一个
class myClass extends anotherClass {
}
myClass类现在可以访问另一个公共或受保护的anotherClass方法。
如果你只希望该类具有另一个的一个方法,或者让一个类从另一个类扩展是不切实际的,那么PHP中没有任何内容可以让你这样做。你正在寻找谷歌的概念是“Mixin”,就像在Mix中一个类的功能与另一个类。在PHP中可以尝试实现此功能的某些模式有article or two,但我自己从未尝试过。
好主意/坏主意?一旦你掌握了这项技术,它既方便又有用,但会降低你的性能并使新手更难以理解你正在使用的代码,特别是(但不限于)不太熟悉OO概念的人。
答案 2 :(得分:0)
如果你的myClass extends anotherClass它继承了anotherClass的所有方法和属性(标记为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);
打印
object(MyClass)#1 (1) {
["myVar":protected]=>
int(15)
}