blob: ea48c7c5828dae7080276863aa17398abe7ce8ec [file] [log] [blame]
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02001<?php
2
3namespace Tightenco\Collect\Support;
4
5/**
6 * @mixin \Tightenco\Collect\Support\Enumerable
7 */
8class HigherOrderWhenProxy
9{
10 /**
11 * The collection being operated on.
12 *
13 * @var \Tightenco\Collect\Support\Enumerable
14 */
15 protected $collection;
16
17 /**
18 * The condition for proxying.
19 *
20 * @var bool
21 */
22 protected $condition;
23
24 /**
25 * Create a new proxy instance.
26 *
27 * @param \Tightenco\Collect\Support\Enumerable $collection
28 * @param bool $condition
29 * @return void
30 */
31 public function __construct(Enumerable $collection, $condition)
32 {
33 $this->condition = $condition;
34 $this->collection = $collection;
35 }
36
37 /**
38 * Proxy accessing an attribute onto the collection.
39 *
40 * @param string $key
41 * @return mixed
42 */
43 public function __get($key)
44 {
45 return $this->condition
46 ? $this->collection->{$key}
47 : $this->collection;
48 }
49
50 /**
51 * Proxy a method call onto the collection.
52 *
53 * @param string $method
54 * @param array $parameters
55 * @return mixed
56 */
57 public function __call($method, $parameters)
58 {
59 return $this->condition
60 ? $this->collection->{$method}(...$parameters)
61 : $this->collection;
62 }
63}