summaryrefslogtreecommitdiffstats
path: root/examples/database.class.php
diff options
context:
space:
mode:
authorMalf Furious <m@lfurio.us>2017-01-14 02:26:28 -0500
committerMalf Furious <m@lfurio.us>2017-01-14 02:26:28 -0500
commitdae3964e7682dcd0d64075dfc28a23c12ef6c52e (patch)
treee75233885bf7aa5124fb2fe7173058acaf30c504 /examples/database.class.php
parent33499cb813d6aac2abc649dd8e42a3c97ce306b2 (diff)
downloadscrott-dae3964e7682dcd0d64075dfc28a23c12ef6c52e.tar.gz
scrott-dae3964e7682dcd0d64075dfc28a23c12ef6c52e.zip
Reset working directory for clean Scrott implementation
Diffstat (limited to 'examples/database.class.php')
-rw-r--r--examples/database.class.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/database.class.php b/examples/database.class.php
new file mode 100644
index 0000000..c7ef65b
--- /dev/null
+++ b/examples/database.class.php
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ * SCROTT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * For more information, please refer to UNLICENSE
+ */
+
+/*
+ * This class provides a common interface to a database. Scrott provides
+ * facilities for interacting with any DBMS that we can use in PHP. To
+ * provide support for a new DBMS, extend this class and implement the
+ * abstract functions. Additionally, update the getInstance() function
+ * in this class so that the new implementation is used under appropriate
+ * configuration.
+ */
+abstract class Database
+{
+ private static $instance = NULL;
+ protected $db;
+
+ /*
+ * Return the database instance object, creating it if this is the
+ * first call to this function. This function will need maintained
+ * as new DBMSs are supported.
+ */
+ public static function getInstance() : Database
+ {
+ // todo
+ }
+
+ /*
+ * These functions are to be implemented by DBMS extensions,
+ * providing a uniform interface to database engines.
+ */
+ public abstract function close();
+ public abstract function query(string $query) : array;
+ public abstract function esc(string $str) : string;
+
+ /*
+ * This function will lookup the row from the database on the given
+ * table containing the given GUID and initialize the class properties
+ * on this object based on the given field list.
+ */
+ public function initObj(string $table, array $fields, string $guid = NULL)
+ {
+ if (is_null($guid))
+ return;
+
+ $guid = $this->esc($guid);
+ $query = "SELECT * FROM " . $table . " WHERE guid = '" . $guid . "'";
+ $res = $this->query($query);
+
+ if (!count($res))
+ return;
+
+ $res = $res[0];
+
+ foreach ($fields as $field)
+ {
+ if (isset($res[$field]))
+ $this->$field = $res[$field];
+ }
+ }
+}
+
+?>