PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 1.35
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v1.35
2.1.0 2.0.15 2.0.12 2.0.10 2.0.4 2.0.1 2.0.0 1.95.3 1.95.2 1.95 1.91.6 trunk 1.11 1.12 1.13 1.20 1.21 1.22 1.23 1.30 1.31 1.32 1.35 1.40 1.41 All 42 releases
fluent-boards / vendor / wpfluent / framework / src / WPFluent / Support / HigherOrderCollectionProxy.php

HigherOrderCollectionProxy.php in FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration 1.35, at vendor/wpfluent/framework/src/WPFluent/Support/HigherOrderCollectionProxy.php

66 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentBoards\Framework\Support;
4
5 Use FluentBoards\Framework\Support\Enumerable;
6
7 /**
8 * @mixin \FluentBoards\Framework\Support\Enumerable
9 */
10 class HigherOrderCollectionProxy
11 {
12 /**
13 * The collection being operated on.
14 *
15 * @var \FluentBoards\Framework\Support\Enumerable
16 */
17 protected $collection;
18
19 /**
20 * The method being proxied.
21 *
22 * @var string
23 */
24 protected $method;
25
26 /**
27 * Create a new proxy instance.
28 *
29 * @param \FluentBoards\Framework\Support\Enumerable $collection
30 * @param string $method
31 * @return void
32 */
33 public function __construct(Enumerable $collection, $method)
34 {
35 $this->method = $method;
36 $this->collection = $collection;
37 }
38
39 /**
40 * Proxy accessing an attribute onto the collection items.
41 *
42 * @param string $key
43 * @return mixed
44 */
45 public function __get($key)
46 {
47 return $this->collection->{$this->method}(function ($value) use ($key) {
48 return is_array($value) ? $value[$key] : $value->{$key};
49 });
50 }
51
52 /**
53 * Proxy a method call onto the collection items.
54 *
55 * @param string $method
56 * @param array $parameters
57 * @return mixed
58 */
59 public function __call($method, $parameters)
60 {
61 return $this->collection->{$this->method}(function ($value) use ($method, $parameters) {
62 return $value->{$method}(...$parameters);
63 });
64 }
65 }
66