Что такое свойство класса?
кучу мануалов перечитал про return, но хоть убей, не пойму, как это работает:
$response->return // КАК ЭТО РАБОТАЕТ???
// Вот функция где ЭТО есть:
private function as_array($response) {
// Случай, когда выборка пустая
if (!isset($response->return)) {
return array();
}
// Случай, когда в выборке всего 1 элемент
if (!is_array($response->return)) {
return array($response->return);
}
return $response->return;
}
хотя бы ссылочкой на правильный мануал помоги)
Это не функция, а метод класса. Тут return - это свойство класса. Проще говоря глобальная переменная внутри класса. Если писать процедурно (без классов) то можно написать так...
// определяем class Res{ var $return = array('bar'); } function as_array( $response ){ // Случай, когда выборка пустая if (!isset($response->return)) { return array(); } // Случай, когда в выборке всего 1 элемент if (!is_array($response->return)) { return array($response->return); } return $response->return; } // вызываем $response = new Res(); $foo = as_array( $response ); // выводим print_r($foo); /* Выведет Array ( [0] => bar ) */переменная может быть не объявлена внутри класса? просто у меня IDE подсвечивает её как обычный return, а когда запускаю метод, в котором присутствует as_array - у меня 500 ошибка на скрипте. хотя метод, в котором нету обработки через as_array - выполняется нормально....
а из переменных есть только $url и $client...
//Вот кусок без лишних методов. class Server { private $url; private $ function __construct($url, $login, $password) { $this->url = $url; $opts = array( 'login' => $login, 'password' => $password, 'authentication' => SOAP_AUTHENTICATION_BASIC, 'compression' => TRUE, 'trace' => TRUE, 'exceptions' => TRUE, 'classmap' => array( 'country' => 'Country', 'region' => 'Region', 'point' => 'Point', 'race' => 'Race', 'raceType' => 'RaceType', 'raceStatus' => 'RaceStatus', 'raceSummary' => 'RaceSummary', 'depotInfo' => '_Depot', 'stop' => 'Stop', 'seat' => 'Seat', 'ticketType' => 'TicketType', 'docType' => 'DocType', 'order' => 'Order', 'ticket' => 'Ticket', 'user' => 'User', 'company' => 'Company', 'benefit' => 'Benefit', 'reference' => 'Reference', 'referenceItem' => 'ReferenceItem', ), // 'connection_timeout' => 10, // 'default_socket_timeout' => 15, 'cache_wsdl' => WSDL_CACHE_NONE ); $this->client = new SoapClient($url, $opts); //var_dump($this->get_functions()); } private function as_object($response) { return isset($response->return) ? $response->return : NULL; } private function as_array($response) { // Случай, когда выборка пустая if (!isset($response->return)) { return array(); } // Случай, когда в выборке всего 1 элемент if (!is_array($response->return)) { return array($response->return); } return $response->return; } /** * Получить информацию о версии сервера * * @return string Текущая версия сервера */ public function get_version() { $response = $this->client->getVersion(); return $this->as_object($response); } /** * Получить список автовокзалов, доступных пользователю * * @return Depot[] Информация об автовокзалах */ public function get_depots() { $response = $this->client->getDepots(); return $this->as_array($response); } }Вот get_version() - работает, остальное 500 ошибка
as_array получает объект в котором должно быть свойство return...
Вот что я вижу, дальше сами разбирайтесь уже...
Т.е. new SoapClient($url, $opts); должен вернуть объект с методом getDepots(), который в свою очередь должен вернуть другой объект со свойством return, которое ждет as_array().
Что там под капотами у SoapClient и getDepots вот это вам и предстоит выяснить и найти ошибку.
Это просто неправильная подсветка синтаксиса может быть. Вы на IDE особо не полагайтесь, в них баги и недоработки бывают только так...
как просто. Кама - ты спаситель) Спасибо тебе) пойду мозг сисадмину выносить, почему у них серв ничего кроме версии не отдает, завтра...
500 ошибка кстати после смены версии php ушла....