Я все еще изучаю ООП, поэтому это может быть даже невозможно (хотя я был бы удивлен, если бы так), мне нужна помощь в вызове метода других классов.
Например, в 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
потому что это означало бы, что я почти соединяю два класса. Это затрудняет:
B
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();