我的班级与另一班级无关。
在我的类中,一个函数正在做同样但精炼的工作作为另一个类中的函数。我可以使用parent:: function_in_another_class()
并让我的函数加入父函数的作业流程吗?
答案 0 :(得分:5)
没有
在PHP中,您只能从无或一个类扩展。在您编写时,两个类彼此独立,没有信息可以在哪里找到一个或哪个类。
但你正在寻找的可能是:
class A
{
function myFunction() {}
}
class B
{
private $a;
public function __construct(A $a)
{
$this->a = $a;
}
public function myFunction()
{
$this->a->myFunction();
}
}
答案 1 :(得分:1)
如果任何类方法已经做同样的事情,你为什么要打电话加入呢?
你不能这样做。如果您想要相同的作业流,最好的方法是实例化另一个类并调用相同的方法。这就是为什么我们使用OOP。
参见示例
interface Fable()
{
public function f();
}
class OtherClass implements Fable
{
public function f()
{
// job flow
}
}
class MyClass
{
private $fable;
public function __construct(Fable $f)
{
$this->fable = $f;
}
public function method1($args){
return $this->fable->f($args);
}
}
答案 2 :(得分:0)
如果当前班级是另一班级的孩子,是的,你可以。 parent
对父类的引用。
来自php.net:
<?php
class A {
function example() {
echo "I am A::example() and provide basic functionality.<br />\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.<br />\n";
parent::example();
}
}
$b = new B;
// This will call B::example(), which will in turn call A::example().
$b->example();
?>
答案 3 :(得分:-1)
您可以做的最好的事情是从A类扩展B类
Class B extends Class A
但是,你也可以:
class ClassA {
function do_something($args) {
// Do something
}
}
class ClassB {
function do_something_inclassA($args) {
classA::do_something($args);
}
}
重要:调用classa :: do_something();是一个静态调用,换句话说,有错误报告E_STRICT,你会收到静态通知警告,因为函数do_something()不是静态函数do_something()
另外,静态调用此函数(即classa :: do_something())意味着类a的函数不能在其中引用$ this