PHPの->がよくわからない

array_map($func, $array)じゃなくて$array->map($func)って書きたいよなあと思ってちょっとやってみたんだけど、チェーンすると

PHP Fatal error:  Unsupported operand types in ...

ってなる。なんでだろう。

<?php
class MyArray {
  private $array;

  public function __construct() {
    $this->array = func_get_args();
  }

  public function map($func) {
    return new MyArray(array_map($func, $this->array));
  }

  public function copy() {
    return new MyArray($this->array);
  }

}

$array = new MyArray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$double = function ($x) {
  return 2 * $x;
};

var_dump($array->map($double));
var_dump($array->map($double)->copy()); //これはできる
var_dump($array->copy()->map($double)); //これはできない

関数渡すとだめだったりすんのかなあ。わからん。