PHP 导入外部类的方法到 MyClass
想知道在PHP中是否可以这样做:
假设我有一个类,内容如下:
class myClass{
var $myVar;
...
myMethod(){
$this->myVar = 10;
}
}
还有另一个类:
class anotherClass {
...
addFive(){
$this->myVar += 5;
}
}
这个“另一个类”有3500行代码,我只想用里面的一个“addFive”方法在我的类中。
- 有没有办法让我导入这个方法,然后在我的类中调用它,并且让$this指向我的类对象?
- 这样做是好习惯还是坏习惯?
- (可选)在Python中是怎么做的?(我只是好奇,因为我刚开始学习Python)
3 个回答
0
如果你的 myClass 是从 anotherClass 继承的,也就是说它是 anotherClass 的子类,那么 myClass 就会拥有 anotherClass 的所有方法和属性(除了那些被标记为私有的)。
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)
}
2
一个更好的方法是把这个复杂的功能放到一个单独的类里。这样,你的两个类都可以创建这个新类的实例,传入需要的数据,然后调用这个功能。
2
最简单的方法就是让一个类继承另一个类。
class myClass extends anotherClass {
}
现在,myClass类可以使用另一个类(anotherClass)中所有公共或受保护的方法。
如果你只想让这个类拥有另一个类的一个方法,或者让一个类继承另一个类不太实际,那么PHP里没有内置的功能可以做到这一点。你可以在网上搜索“Mixin”,意思是把一个类的功能混合到另一个类里。有一些文章介绍了一些可以在PHP中实现这种功能的模式,但我自己从来没有尝试过。
这是个好主意还是坏主意?一旦你掌握了这种技巧,它会很方便也很有用,但会影响性能,并且让新手更难理解你代码的意思,尤其是对那些不太熟悉面向对象概念的人来说。