Вызов функции класса ONE из класса TWO без расширения?

Если у меня есть два класса A, B и один не расширяет другой, они являются отдельными, но оба загружаются в скрипт, я могу по-прежнему ссылаться на функцию в A из B?

class A { function one() { echo "Class A"; } } class B { function two() { echo "Class B"; A::one(); } } $a new A; $b = new B; $b->two(); 

На первый взгляд, вы можете это сделать. Однако функция one() в классе A должна быть объявлена ​​как static для вашей нотации вызовов. (Это делает метод класса .)

Другая альтернатива, предложенная последними строками вашего кода, предназначена для экземпляра $b для вызова функции в экземпляре $a . Такие функции называются методами экземпляра и как вы обычно взаимодействуете с объектом. Чтобы получить доступ к этим методам, они должны быть объявлены как public . Методы, объявленные как private могут быть вызваны другими методами внутри этого класса.

Существует несколько способов вызова метода экземпляра в вашем коде. Это очевидные два, которые вы можете передать в $a в качестве параметра функции, или вы можете создать экземпляр класса A внутри вашего метода.

Чего вы на самом деле пытаетесь достичь?

Вы можете определить его так.

 class A { public static function one() { echo "Class A"; } } class B { function two() { echo "Class B"; A::one(); } } $a new A; $b = new B; $b->two(); 

Вы можете определить ее как статическую, но зачем вы это делаете?