Извикване на функция във функция от друг клас PHP

Прочетох няколко теми за абстрактен клас тук в Stackoverflow и мисля, че това е, което ми трябва, но не мога да разбера декларацията направо.

Това, което искам да направя, е да извикам функция2 (в клас B) във функция1 (в клас A).

Как трябва да направя това?


person Fredrik    schedule 07.12.2011    source източник
comment
Имате нужда от повече информация - имате ли инициализирано копие на classB в classA?   -  person Pekka    schedule 07.12.2011
comment
Ако нямате достъп до членове на данни от този клас, направете функцията static. След това можете да го извикате с помощта на: MyClass::myFunction.   -  person Evan Mulawski    schedule 07.12.2011


Отговори (1)


Ако имате нужда само от достъп до метода на ClassB от ClassA, но не се нуждаете от връзка родител-дете между двете, статичен метод може да е по-подходящ:

class ClassA
{
  public function method1() {
    echo ClassB::method2();
  }
}

class ClassB
{
  public static function method2() {
    return 'WOOT!';
  }
}

$cls_a = new ClassA();
$cls_a->method1();

// or alternatively, you don't even need to instantiate ClassA
echo ClassB::method2();
person rdlowrey    schedule 07.12.2011
comment
полезна информация. Благодаря за методите. - person Adsy2010; 28.11.2013
comment
Ами ако класът е в друга директория? - person Rafael; 21.07.2015
comment
от PHP 5.4 трябва да използвате (new ClassName)->method(); - person NineCattoRules; 28.04.2017