summaryrefslogblamecommitdiffstats
path: root/app/class/database.class.php
blob: 4f26c4516594014233425d69864b2b9722afd6ef (plain) (tree)

























































                                                                            
<?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.
     */
    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() : void;
    public abstract function query(string $query) : array;
    public abstract function esc(string $str) : string;
}

?>