alekciy
Новичок
PHP5.1. Передача в __construct() параметров из класса потомка. Как правильно?
Ни как не могу сообразить в чем дело. Дело такое. Имеем класс и от него потомок:
Теперь создаем экземпляр класса:
И получаем Warning:
2 это строка: $cards = new GamePreferance;
18 function __construct($type).
В принципе то код работает и я получаю что хочу, но хотел узнать, на сколько верен такой способ передачи?
Кстати переделал под вариант при котором Warning-а я не получаю:
Однако в чем неверность первого метода я не уловил. Почему в Warning-е пишется о том, что аргумент потерян, хотя логика отрабатывается как и было задуманно?
Ни как не могу сообразить в чем дело. Дело такое. Имеем класс и от него потомок:
PHP:
class PlayingCards
{
public $Cards;
function __construct($type)
{
if ($type == '32')
{
$this->Cards = Array('S6','S7','S8','S9','S10','SJ','SQ','SK','SA','C6','C7','C8','C9','C10','CJ','CQ','CK','CA','D6','D7','D8','D9','D10','DJ','DQ','DK','DA','H6','H7','H8','H9','H10','HJ','HQ','HK','HA');
};
}
function shuffleCards ()
{
shuffle($this->Cards);
}
};
class GamePreferance extends PlayingCards
{
function RoundCards()
{
parent::__construct("32");
parent::shuffleCards();
return $this->Cards;
}
};
PHP:
<?php
$cards = new GamePreferance;
print_r($cards->RoundCards());
?>
Код:
Warning: Missing argument 1 for PlayingCards::__construct(), called in H:\my_web_project\alekciy.ru\projects\preference\class.php on line 2 and defined in H:\my_web_project\alekciy.ru\projects\preference\class.php on line 18
18 function __construct($type).
В принципе то код работает и я получаю что хочу, но хотел узнать, на сколько верен такой способ передачи?
Кстати переделал под вариант при котором Warning-а я не получаю:
PHP:
class PlayingCards
{
public $Cards;
protected $type;
function __construct()
{
if ($this->type == '32')
{
$this->Cards = Array('S6','S7','S8','S9','S10','SJ','SQ','SK','SA','C6','C7','C8','C9','C10','CJ','CQ','CK','CA','D6','D7','D8','D9','D10','DJ','DQ','DK','DA','H6','H7','H8','H9','H10','HJ','HQ','HK','HA');
};
}
function shuffleCards ()
{
shuffle($this->Cards);
}
};
class GamePreferance extends PlayingCards
{
function RoundCards()
{
$this->type = "32";
parent::__construct();
parent::shuffleCards();
return $this->Cards;
}
};