summaryrefslogtreecommitdiffstats
path: root/app/class/database.class.php
blob: c0f13d787c869ed68f20d3ed754535a12a1c1ee1 (plain) (blame)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?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
 */

/* Include database configuration file if it exists */
define("DATABASE_CONFIG_FILE", "dbconfig.php");
is_file(DATABASE_CONFIG_FILE) && require_once DATABASE_CONFIG_FILE;

/*
 * This class provides a common interface to various database drivers.
 * 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;

    /*
     * Call this object's close function while being destructed
     */
    public function __destruct()
    {
        $this->_close();
    }

    /*
     * 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.
     */
    private static function getInstance() : database
    {
        // TODO
    }

    /*
     * These functions are to be implemented by DBMS extensions,
     * providing a uniform interface to database engines.
     */
    protected abstract function _close() : void;
    protected abstract function _query(string $query) : array;
    protected abstract function _esc(string $str) : string;

    /*
     * Perform a database query and return the results as an array
     * of arrays.
     */
    public static function query(string $query) : array
    {
        return self::getInstance()->_query($query);
    }

    /*
     * Escape a given string for use in a database query
     */
    public static function esc(string $str) : string
    {
        return self::getInstance()->_esc($str);
    }
}

?>