PHP скрипт:
class db_singleton
{
const ORACLE_HOST = "SOMEVALIDIP";
const ORACLE_USER = "oracleuser";
const ORACLE_PASS = "oraclepass";
const ORACLE_DB = "SOMEVALIDIP/ORACLEDB";
private static $instance; // stores the instance
private function __construct() { } // block directly instantiating
private function __clone() { } // block cloning of the object/*public static function getInstance() {
if(!self::$instance) {
// instance doesn't exist yet, so create it
self::$instance = new self();
}
// return an instance of this class (Database)
return self::$instance;
}*/
public static function call()
{
// create the instance if it does not exist
if(!isset(self::$instance))
{
// the ORACLE_* constants should be set to or
// replaced with your db connection details
self::$instance = oci_connect(self::ORACLE_HOST, self::ORACLE_USER, self::ORACLE_PASS, self::ORACLE_DB);
if(self::$instance->connect_error)
{
throw new Exception('Oracle connection failed: ' . self::$instance->connect_error);
}
}
// return the instance
return self::$instance;
}
}
Чтобы сделать запрос, я пишу ниже код:
$result = db_singleton::call()->query("SELECT * FROM some_valid_table");
print_r($result);exit;
Вышесказанное дает исключение:
Fatal error: Call to a member function query() on a non-object
Не уверен насчет подключения Oracle DB
использовать PHP Singleton Pattern
,
Благодарю.
С php.net
resource oci_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] )
Пример:
// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_connect('username', 'password', 'localhost/XE');
oci_connect
возвращается resource
, Вы должны использовать oci_
семейство функций для извлечения данных из БД, например:
oci_execute(
oci_parse(
db_singleton::call(), 'SELECT * FROM some_valid_table'
)
);
Дополнительные примеры доступны на странице ссылки.