51 lines
1.1 KiB
PHP
51 lines
1.1 KiB
PHP
<?php
|
|
namespace Elementor\Core\Utils;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly.
|
|
}
|
|
|
|
class Static_Collection {
|
|
|
|
/**
|
|
* The current Collection instance.
|
|
*
|
|
* @var Collection
|
|
*/
|
|
protected $collection;
|
|
|
|
/**
|
|
* Return only unique values.
|
|
*
|
|
* @var bool
|
|
*/
|
|
protected $unique_values = false;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
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 string $name
|
|
* @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 ?
|
|
$call->unique() :
|
|
$call;
|
|
}
|
|
|
|
return $call;
|
|
}
|
|
}
|