Включая классы без переопределения

0

Поэтому я знаю, что для использования a.class.php в b.class.php мне нужно будет иметь класс, включенный в файл класса b. Мой вопрос таков. На данный момент у меня есть файлы классов. db.class.php и account.class.php

db.class.php

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/settings.php');
class db extends pdo{
    //Website Variables

    public $sitedb = '';
    public $siteconfig;
    public $sitesettings = array(
        'host'      => SITEHOST,
        'database'  => SITEDB,
        'username'  => SITEUSER,
        'password'  => SITEPASS,
    );
    public $realmdb = '';
    public $realmconfig;
    public $realmsettings = array(
        'host'      => REALMHOST,
        'database'  => REALMDB,
        'username'  => REALMUSER,
        'password'  => REALMPASS,
    );

    public function __construct(){

        $this->sitedb = new PDO(
            "mysql:host={$this->sitesettings['host']};" .
            "dbname={$this->sitesettings['database']};" .
            "charset=utf8",
            "{$this->sitesettings['username']}",
            "{$this->sitesettings['password']}"
        );
        $this->realmdb = new PDO(
            "mysql:host={$this->realmsettings['host']};" .
            "dbname={$this->realmsettings['database']};" .
            "charset=utf8",
            "{$this->realmsettings['username']}",
            "{$this->realmsettings['password']}"
        );
        $this->sitedb->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $this->realmdb->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }

}
$db = new db();

account.class.php

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/settings.php');
class account extends db {
    public function Login() {
        $query = <<<SQL
        SELECT id
        FROM profile
        WHERE password = :password
SQL;
            $resource = $db->sitedb->prepare ( $query );
            $resource->execute( array(
                ':password' => sha1(strtoupper($_POST['email'].':'.$_POST['password'],
                ));
                $row_count = $resource->rowCount();
                echo $row_count;

        }
}
$account = new account();

Этот текущий формат говорит мне, что db нельзя переопределить, однако, если я удалю требование о включении файла настроек, который имеет

foreach (glob("functions.d/*.class.php") as $class)
{
    include $class;
}

Затем он сообщает мне, что класс db не может быть найден. Каким образом я могу работать, чтобы эта работа работала правильно?

  • 0
    class_existsI () API прежде, чем включить класс
Теги:

1 ответ

0

Оказывается, лучший способ добиться этого - правильно включить включения и иметь все классы в одном файле, а внутри моей страницы включения, использующей классы, есть глобальная учетная запись $ db или global $, в зависимости от того, какую функцию я выполняю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню