ArrayData* ProxyArray::PlusEq(ArrayData* ad, const ArrayData* elems) { if (!elems->isPHPArray()) throwInvalidAdditionException(elems); auto const r = innerArr(ad)->plusEq(elems); reseatable(ad, r); return ad; }
ArrayData* EmptyArray::PlusEq(ArrayData*, const ArrayData* elems) { if (!elems->isPHPArray()) throwInvalidAdditionException(elems); elems->incRefCount(); return const_cast<ArrayData*>(elems); }
ArrayData* APCLocalArray::PlusEq(ArrayData* ad, const ArrayData *elems) { if (!elems->isPHPArray()) throwInvalidAdditionException(elems); auto escalated = Array::attach(Escalate(ad)); return (escalated += const_cast<ArrayData*>(elems)).detach(); }