PHP мыло и пространства имен. Неустранимая ошибка PHP: класс 'Jira \ SoapClient' не найден - PullRequest
0 голосов
/ 17 февраля 2012

Мы обновляем нашу кодовую базу для использования функциональности пространства имен, предоставленной в PHP-5.3 +

Раньше все наши файлы счастливо жили на веб-сервере в / htdocs / php, но теперь мы разделяем наши сценарии и помещаемнаши библиотеки PHP в / htdocs / php / lib /

В / htdocs / php / lib / у нас есть файл с именем Jira.php, которому мы дали пространство имен:

<?php
# Define a namespace for this library
namespace Jira;

function create_client($jira_url, $options)
{
    global $client;

    try
    {
            $client = new SoapClient($jira_url, $options);
    }
    catch (Exception $error)
    {
            echo $error -> getMessage() . "<br/><p style='color:red'> Could not connect to Jira </p>";
    }
}
?>

Однако, когда мы пытаемся вызвать эту функцию из скрипта в / htdocs / php, мы получаем ошибку «класс не найден»:

PHP Fatal error:  Class 'Jira\SoapClient' not found

Это происходит сбой при попытке создания объекта SoapClient.

Я подтвердил, что у меня установлен пакет php-soap в / usr / share / php / SOAP / и php_info ();показывает, что он включен и т. д.

Итак, вероятно, это проблема с соглашением о пространстве имен.Как мы можем включить этот класс без ошибки?

С уважением, нс

1 Ответ

6 голосов
/ 17 февраля 2012

SoapClient, вероятно, назначен глобальному пространству имен.

В вашем скрипте текущее пространство имен равно Jira.

Попробуйте использовать:

$client = new \SoapClient($jira_url, $options); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...