Merge pull request #4979 from xurizaemon/codingstandards-12
[civicrm-core.git] / CRM / Utils / FakeObject.php
CommitLineData
72ad6c1b
TO
1<?php
2
3/**
4 * This is a quick-and-dirty way to define a vaguely-class-ish structure. It's non-performant, abnormal,
5 * and not a complete OOP system. Only use for testing/mocking.
6 *
7 * @code
8 * $object = new CRM_Utils_FakeObject(array(
9 * 'doIt' => function() { print "It!\n"; }
10 * ));
11 * $object->doIt();
12 * @endcode
13 */
14class CRM_Utils_FakeObject {
5bc392e6
EM
15 /**
16 * @param $array
17 */
00be9182 18 public function __construct($array) {
72ad6c1b
TO
19 $this->array = $array;
20 }
21
5bc392e6 22 /**
100fef9d 23 * @param string $name
5bc392e6
EM
24 * @param $arguments
25 *
26 * @throws Exception
27 */
00be9182 28 public function __call($name, $arguments) {
72ad6c1b
TO
29 if (isset($this->array[$name]) && is_callable($this->array[$name])) {
30 return call_user_func_array($this->array[$name], $arguments);
0db6c3e1
TO
31 }
32 else {
72ad6c1b
TO
33 throw new Exception("Call to unimplemented method: $name");
34 }
35 }
5bc392e6 36}