case "id":
$this->$key = (int)$val; break;
これが動作することってあるの?