Пытаюсь сделать на PHP что-то вроде std::vector из С++
class Vector
{
private $a = [];
function __construct( $arr = [] ) {
$this->a = (array)$arr;
}
function &at( $i ) {
return $this->a[$i];
}
}
К удивлению обнаружил, что так делать нельзя:
$vec = new Vector( ['a', 'b'] );
$vec->at(1) = 'z'; // Fatal error: Can't use method return value in write context
А так почему-то можно:
$vec = new Vector( ['a', 'b'] );
$ref = &$vec->at(1);
$ref = 'z'; // ok!
Можно как-то реализовать присвоение без промежуточных переменных?