ООП в PHP, передать переменную & amp; вывод напрямую с именем функции

Я новичок в 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' );

-1

Решение

Как и в случае с 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' );
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector