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