summaryrefslogtreecommitdiff
path: root/core/classes/Repository.php
blob: c01d0c15c70c6f545446d857b11386c6e9db286e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

/** Repository
 * is an abstract class that strores entities
 * and serves them via ::pull() method when needed
 * 
 * it also has an ::echo() method to list the 
 */
abstract class Repository
{

    /** all repositories (need to) have
     * one public static array named '$repository'
     */
    public static $repository = [];

    /** pull
     * one entity from repository
     * @param $entity (string): the label of the entity
     */
    public static function pull($entity)
    {
        if (array_key_exists($entity, static::$repository)) {

            return static::$repository[$entity];

        } else die('repository does not exist');

    }


    /** echo
     * lists the entities of the repository;
     * by default it only lists the labes of the entities;
     * @param $content (bool): if true serve contents along with the labels
     * @return (array)
     */
    public static function echo($content =false)
    {
        if ($content)   return static::$repository;
        else            return array_keys(static::$repository);
    }
}