namespace Elementor\Core\Utils;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
class Static_Collection {
* The current Collection instance.
* Return only unique values.
protected $unique_values = false;
public function __construct( array $items = [], $unique_values = false ) {
$this->collection = new Collection( $items );
$this->unique_values = $unique_values;
* Since this class is a wrapper, every call will be forwarded to wrapped class.
* Most of the collection methods returns a new collection instance, and therefore
* it will be assigned as the current collection instance after executing any method.
* @param array $arguments
public function __call( $name, $arguments ) {
$call = call_user_func_array( [ $this->collection, $name ], $arguments );
if ( $call instanceof Collection ) {
$this->collection = $this->unique_values ?