Я новичок в OOP. Я создал этот код, и я знаю, как назвать его таким образом
$john = new people('Bla', 'bla');
и позвонить, используя $john->boy();
Но я хочу вызывать функции напрямую и передавать конкретные (для мальчика .. $name, $beard
для девушки … $name, $hair, $eyes
) Переменные на это.
<?php
class people {
public $name;
protected $hair;
protected $eyes;
protected $beard;
public function __constructor($name, $hair, $eyes, $beard) {
$this->name = $name;
$this->hair = $hair;
$this->eyes = $eyes;
$this->beard = $beard;
}
public function getName() {
return $this->name;
}
public function getHair() {
return $this->hair;
}
public function getEyes() {
return $this-eyes;
}
public function getBeard() {
return $this->beard;
}
public static function boy() {
$name = getName();
$beard = getBeard();
echo $name . ' has ' . $beard . ' beard';
}
public static function girl() {
$name = getName();
$hair = getHair();
$eyes = getEyes();
echo $name . ' has ' . $hair . ' hair and ' . $eyes . ' eyes';
}
}
И позвонить & вывод напрямую с именем функции:
people::boy('John', 'long');
people::boy('Steve', 'small');
people::girl( 'Eva', 'long', 'blue' );
Как и в случае с ka_lin, нельзя вызывать нестатический метод из статического контекста; Итак, что вы можете сделать для этого кода работает так:
<?php
class people {
protected $name;
protected $hair;
protected $eyes;
protected $beard;
public function __construct($name, $hair, $eyes, $beard) {
$this->name = $name;
$this->hair = $hair;
$this->eyes = $eyes;
$this->beard = $beard;
}
public function getName() {
return $this->name;
}
public function getHair() {
return $this->hair;
}
public function getEyes() {
return $this->eyes;
}
public function getBeard() {
return $this->beard;
}
public static function boy($name, $beard) {
$boy = new self($name, null, null, $beard);
$name = $boy->getName();
$beard = $boy->getBeard();
echo $name . ' has ' . $beard . ' beard' . PHP_EOL;
}
public static function girl($name, $hair, $eyes) {
$girl = new self($name, $hair, $eyes, null);
$name = $girl->getName();
$hair = $girl->getHair();
$eyes = $girl->getEyes();
echo $name . ' has ' . $hair . ' hair and ' . $eyes . ' eyes' . PHP_EOL;
}
}
people::boy('John', 'long');
people::boy('Steve', 'small');
people::girl( 'Eva', 'long', 'blue' );
Других решений пока нет …