Как я могу определить с помощью php, что на машине установлен oracle (oci8 и / или pdo_oci)? - PullRequest
6 голосов
/ 21 сентября 2008

Как я могу определить с помощью php, что на машине установлен oracle (oci8 and/or pdo_oci)?

Я работаю над проектом PHP, где некоторые разработчики, такие как я, установили его, но для разработчиков не нужно его иметь. Как я могу написать быструю функцию для использования в коде, чтобы мои разработчики могли работать с внешним видом сайта без сбоев на них?

Ответы [ 4 ]

4 голосов
/ 21 сентября 2008

если расширение oci не установлено, то вы получите фатальную ошибку с ответом farside.myopenid.com, вы можете использовать function_exists ('oci_connect') или extension_loaded ('oci8') (или любое другое расширение на самом деле называется)

1 голос
/ 22 сентября 2008

У людей здесь есть части решения, но давайте свернем все это в одно решение.

Только для одного экземпляра функции оракула тестирование с function_exists() вполне достаточно; но если код будет распространяться на вызовы OCI, то будет очень больно в задницу обернуть каждого в function_exists() тест.

Поэтому, я думаю, самое простое решение - создать файл с именем nodatabase.php , который может выглядеть примерно так:

<?php
// nodatabase.php
// explicitly override database functions with empty stubs. Only include this file
// when you want to run the code without an actual database backend. Any database-
// related functions used in the codebase must be included below.
function oci_connect($user, $password, $db = '', $charset='UTF-8', $session_mode=null)
{
}

function oci_execute($statement, $mode=0)
{
}
// and so on...

Затем, условно включите этот файл, если глобальный (скажем, THEME_TESTING) определен непосредственно перед тем, где вызывается код базы данных. Такое включение может выглядеть так:

// define("THEME_TESTING", true) // uncomment this line to disable database usage
if( defined(THEME_TESTING) )
  include('nodatabase.php'); // override oracle API with stub functions for the artists.

Теперь, когда вы передаете проект художникам, им просто нужно сделать одну модификацию, и они готовы к работе.

0 голосов
/ 21 сентября 2008

Как упомянуто выше Грегом, программно вы можете использовать метод function_exists (). Не забывайте, что вы также можете использовать следующее, чтобы увидеть все особенности среды при установке PHP, используя следующее:

<?php
phpinfo();
?>
0 голосов
/ 21 сентября 2008

Я не знаю, полностью ли я понимаю ваш вопрос, но простым способом было бы сделать это:

<?php
  $connection = oci_connect('username', 'password', 'table');
  if (!$connection) {
    // no OCI connection.
  }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...