#php #symfony1
#php #symfony1
Вопрос:
У меня есть приложение symfony 1.4 с некоторыми классами для подключения к веб-службе SOAP, хранящейся в apps / appname / lib. Когда я пытаюсь получить доступ к sfConfig
классу, чтобы получить некоторые переменные, которые я установил app.yml
, выдается ошибка, поскольку приложение не распознает sfConfig::get('app_myvar')
как метод, вызываемый в классе.
Как мне сделать sfConfig
класс доступным для классов в моем каталоге apps / appname / lib?
Это ошибка, которую я получаю
Parse error: syntax error, unexpected '(', expecting ',' or ';' in /Users/my/Sites/mySite/apps/frontend/lib/mySOAP.class.php on line 9
И вот вершина моего класса:
class mySOAP extends SoapClient {
protected $client = null;
protected $soapUrl = sfConfig::get('app_my_url');
protected $options = array(
'trace' => 1,
'exceptions' => 1,
'soap_version' => SOAP_1_2,
//'encoding' => 'ISO-8859-1',
'features' => SOAP_SINGLE_ELEMENT_ARRAYS
Строка 9
protected $soapUrl = sfConfig::get('app_my_url');
Ответ №1:
sfConfig
Класс загружается автоматически при загрузке стека Symfony. Таким образом, либо ваш запуск через index.php
(или любой другой контроллер интерфейса), либо CLI, у вас должен быть доступ к sfConfig
.
Итак, мое лучшее предположение заключается в том, что вы либо не успешно настроили стек Symfony (хотя это должно вызвать другие ошибки на более ранней стадии), либо пытаетесь получить доступ к app.yml
скрипту извне Symfony
? В последнем случае вы можете либо загрузить Symfony, либо включить sfYaml
анализатор и проанализировать app.yml
его самостоятельно.
Комментарии:
1. Трассировка стека в моем приложении показывает, что я загружаю стек Symfony. Я думаю, мне нужно найти способ добавить интерфейс в объявление моего класса, чтобы он имел доступ к классу sfConfig. Прямо сейчас мой пользовательский класс просто расширяет стандартный класс php SoapClient
2. sfConfig — это (один из немногих) глобальных классов в Symfony. После загрузки вы должны иметь к нему доступ. Не могли бы вы расширить свой вопрос некоторыми примерами кода (функцией, в которой вы ее вызываете) и точным сообщением об ошибке?
3. Я только что опубликовал свое сообщение об ошибке, вернувшись к работе над этим проектом через месяц. В любом случае, судя по ошибке, я надеюсь, что это что-то глупое, что я делаю 🙂
4. Во-первых: вы не должны (не можете) присваивать значение для
$soapUrl
непосредственно после его объявления. Вы должны назначить его в конструкторе. Второе: можете ли вы указать, какая строка является строкой 9? Ошибка, которую вы получаете, является «синтаксической ошибкой», что означает, что у вас ошибка в самом коде, а не в «логике».5. Я отредактировал свой ответ. Так что это определенно как-то связано с назначением
$soapURL
права после его объявления. Возможно, мне следует назначить его где-нибудь еще?