我的类独立于另一个类在我的类中,一个函数与另一个类中的函数做着相同但精细的工作。我可以使用parent:: function_in_another_class()
并让我的函数加入父函数的作业流吗?
否。
在PHP中,您只能从一个类或一个类进行扩展。当您编写这两个类彼此独立时,没有信息可以在哪里找到其中一个或另一个类。
但你想要的可能是:
class A
{
function myFunction() {}
}
class B
{
private $a;
public function __construct(A $a)
{
$this->a = $a;
}
public function myFunction()
{
$this->a->myFunction();
}
}
如果任何类方法已经在做同样的事情,为什么还要调用join?
如果你想要相同的作业流,最好的方法就是实例化另一个类并调用相同的方法。这就是我们使用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);
}
}
如果当前类是另一个类的子类,是的,您可以。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();
?>
这里可以做的最好的事情是从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_semething(
此外,静态调用此函数(即classa::do_something())意味着类a的函数不能在