PHP: вызов метода другого класса
Я все еще изучаю ООП, поэтому это может 9X_php.ini быть даже невозможно (хотя я был бы удивлен, если 9X_oo-design так), мне нужна помощь в вызове другого 9X_php5 метода классов.
Например, в ClassA I
есть этот метод:
function getName() { return $this->name; }
теперь 9X_object-oriented-modeling из ClassB
(другой файл, но в том же каталоге), я 9X_php5 хочу вызвать ClassA
getName()
, как мне это сделать? Я попытался 9X_php-frameworks просто выполнить include()
, но это не сработало.
Спасибо!
Ответ #1
Ответ на вопрос: PHP: вызов метода другого класса
//file1.php name; } } ?> //file2.php getName(); echo $name; //Prints John } } $classb = new ClassB(); $classb->callA(); ?>
9X_oo
- правильно - это include, вероятно, должно быть в управляющем файле, который вызывает как A, так и B в ...
Ответ #2
Ответ на вопрос: PHP: вызов метода другого класса
Если это отдельные классы, вы можете сделать 9X_php5 что-то вроде следующего:
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();
В этом примере я 9X_oops сначала создал новый экземпляр класса A
. И 9X_ood после этого я создал новый экземпляр класса 9X_oo B
, которому я передаю экземпляр A
в конструктор. Теперь 9X_object-oriented-design B
может получить доступ ко всем открытым 9X_oops членам класса A
с помощью $this->a
.
Также обратите 9X_php-frameworks внимание, что я не создаю экземпляр класса 9X_oo A
внутри класса B
, потому что это будет означать, что 9X_oops я плотно объединю два класса. Это затрудняет:
- модульное тестирование вашего класса
B
- заменить класс
A
на другой класс
Ответ #3
Ответ на вопрос: PHP: вызов метода другого класса
Вам потребуется экземпляр ClassA в ClassB 9X_php-mail или ClassB наследовать ClassA
class ClassA { public function getName() { echo $this->name; } } class ClassB extends ClassA { public function getName() { parent::getName(); } }
Без наследования 9X_ood или метода экземпляра вам понадобится ClassA, чтобы 9X_ood иметь статический метод
class ClassA { public static function getName() { echo "Rawkode"; } }
--- другой файл ---
echo ClassA::getName();
Если 9X_object-oriented вы просто хотите вызвать метод из экземпляра 9X_php-cli класса:
class ClassA { public function getName() { echo "Rawkode"; } }
--- другой файл ---
$a = new ClassA(); echo $a->getName();
Независимо от 9X_php-mail того, какое решение вы выберете, необходим 9X_php require 'ClassA.php
.
- `ClassA :: getName();` - очарование.<p><span clas ...
-
18
-
2
-
11
-
8
-
23
-
6
-
15
-
10
-
6
-
6
-
3
-
4
-
9
-
7
-
6
-
3
-
6
-
3
-
3
-
4
-
9
-
7
-
8
-
10
-
10
-
5
-
6
-
14
-
7
-
3
-
3
-
11
-
7
-
5
-
4
-
2
-
11
-
4
-
5
-
2
-
6
-
3
-
3
-
4
-
5
-
3
-
2
-
4
-
4
-
2