PHP: вызов метода другого класса

Я все еще изучаю ООП, поэтому это может быть даже невозможно (хотя я был бы удивлен, если бы так), мне нужна помощь в вызове метода других классов.

Например, в ClassA I есть этот метод:

 function getName() { return $this->name; } 

теперь из ClassB (другой файл, но в том же каталоге), я хочу вызвать getName() , как мне это сделать? Я попытался просто include() но это не сработает.

Благодаря!

 //file1.php <?php class ClassA { private $name = 'John'; function getName() { return $this->name; } } ?> //file2.php <?php include ("file1.php"); class ClassB { function __construct() { } function callA() { $classA = new ClassA(); $name = $classA->getName(); echo $name; //Prints John } } $classb = new ClassB(); $classb->callA(); ?> 

Если они являются отдельными классами, вы можете сделать что-то вроде следующего:

 class A { private $name; public function __construct() { $this->name = 'Some Name'; } public function getName() { return $this->name; } } class B { private $a; public function __construct(A $a) { $this->a = $a; } function getNameOfA() { return $this->a->getName(); } } $a = new A(); $b = new B($a); $b->getNameOfA(); 

Что я сделал в этом примере, сначала создайте новый экземпляр класса A И после этого я создал новый экземпляр класса B которому передаю экземпляр A в конструктор. Теперь B может получить доступ ко всем публичным членам класса A используя $this->a .

Также обратите внимание, что я не создаю экземпляр класса A внутри класса B потому что это означало бы, что я почти соединяю два класса. Это затрудняет:

  1. блок тестирует ваш класс B
  2. замените класс A для другого класса

Вам нужно будет иметь экземпляр класса ClassA в ClassB или иметь ClassB, наследующий ClassA

 class ClassA { public function getName() { echo $this->name; } } class ClassB extends ClassA { public function getName() { parent::getName(); } } 

Без метода наследования или экземпляра вам потребуется ClassA для статического метода

 class ClassA { public static function getName() { echo "Rawkode"; } } 

— другой файл —

echo ClassA::getName();

Если вы просто хотите вызвать метод из экземпляра класса:

 class ClassA { public function getName() { echo "Rawkode"; } } 

— другой файл —

 $a = new ClassA(); echo $a->getName(); 

Независимо от require 'ClassA.php вами решения, require 'ClassA.php .

Файл 1

 class ClassA { public $name = 'A'; public function getName(){ return $this->name; } } 

Файл 2

 include("file1.php"); class ClassB { public $name = 'B'; public function getName(){ return $this->name; } public function callA(){ $a = new ClassA(); return $a->getName(); } public static function callAStatic(){ $a = new ClassA(); return $a->getName(); } } $b = new ClassB(); echo $b->callA(); echo $b->getName(); echo ClassB::callAStatic(); в include("file1.php"); class ClassB { public $name = 'B'; public function getName(){ return $this->name; } public function callA(){ $a = new ClassA(); return $a->getName(); } public static function callAStatic(){ $a = new ClassA(); return $a->getName(); } } $b = new ClassB(); echo $b->callA(); echo $b->getName(); echo ClassB::callAStatic();