Ошибка при вызове родительского метода
Хочу из дочернего класса Square вызвать родительский метод getSideLength при помощи private float $sideLength = parent::getSideLength($coord1, $coord2);;
, но интерпретатор выдает ошибку:
PHP Fatal error: Constant expression contains invalid operations in main.php on line 18
При этом, когда создаю переменную $sideLength через конструктор, то ошибки не происходит. Не хочу создавать переменную чере конструктор. Как мне это сделать? Поддерживает ли php ленивые вычисления?
Мой код:
<?php
abstract class Figure
{
protected function getSideLength(array $coord1, array $coord2) {
[$x1, $y1] = $coord1;
[$x2, $y2] = $coord2;
return sqrt(pow(($x2 - $x1),2) + pow(($y2 - $y1),2));
}
}
final class Square extends Figure
{
private array $coord1;
private array $coord2;
private array $coord3;
private array $coord4;
private float $sideLength = parent::getSideLength($coord1, $coord2);;
function __construct(array $coord1, array $coord2,
array $coord3, array $coord4) {
$this->coord1 = $coord1;
$this->coord2 = $coord2;
$this->coord3 = $coord3;
$this->coord4 = $coord4;
}
}
Источник: Stack Overflow на русском