summaryrefslogtreecommitdiff
path: root/core/classes/Repository.php
diff options
context:
space:
mode:
Diffstat (limited to 'core/classes/Repository.php')
-rw-r--r--core/classes/Repository.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/core/classes/Repository.php b/core/classes/Repository.php
new file mode 100644
index 0000000..c01d0c1
--- /dev/null
+++ b/core/classes/Repository.php
@@ -0,0 +1,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);
+ }
+} \ No newline at end of file