Попробуйте изменить конструктор на:
function __construct($price, $weight = null)
{
$this->_price = $price;
$this->_weight = $weight;
if ($weight === null) {
$weight = "4242";
}
}
При добавлении = null
к параметрам будет установлено значение по умолчанию, если вы не передадите значение.
Итак $car = new BMW(25000);
будет работать без ошибок.
Редактировать : Если вы всегда хотите 4242 в качестве значения по умолчанию, вы можете добавить это в сигнатуру конструктора.
function __construct($price, $weight = "4242")
{...}
$car = new BMW(123);
echo $car->getWeight();
//Will echo 4242
Вы if ($weight == null)
больше не понадобится.