Bitrix-D7  20.5.0
forum/lib/internals/entityfabric.php
См. документацию.
1 <?php
2 namespace Bitrix\Forum\Internals;
4 {
5  protected static $repo = [];
6 
7  /**
8  * @param int $id
9  * @return static
10  */
11  public static function getById($id)
12  {
13  if (!array_key_exists(__CLASS__, self::$repo))
14  {
15  self::$repo[__CLASS__] = [];
16  }
17  $id = intval($id);
18  if (!array_key_exists($id, self::$repo[__CLASS__]))
19  {
20  self::$repo[__CLASS__][$id] = new static($id);
21  }
22  return self::$repo[__CLASS__][$id];
23  }
24 
25  public function destroy()
26  {
27  if (array_key_exists(__CLASS__, self::$repo))
28  {
29  foreach (self::$repo[__CLASS__] as $key => $object)
30  {
31  if ($object === $this)
32  {
33  unset(self::$repo[__CLASS__][$key]);
34  AddMessage2Log("Object: ".__CLASS__." $key were destroyed.");
35  return;
36  }
37  }
38  }
39  }
40  /**
41  * @param static|int $object
42  * @return static
43  */
44  public static function getInstance($object)
45  {
46  if ($object instanceof static)
47  {
48  return $object;
49  }
50  return static::getById($object);
51  }
52 }