Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно как-то передавать инфу между классами или проще все в одном классе делать?
 
 автор: elenaki   (27.04.2015 в 19:59)   письмо автору
 
 

У меня SOAP- запрос. При первом входе на страницу он делается автоматически, в ответ принимает данные, на основании которых
строит форму. Дальше пользователь должен из формы выбрать и снова послать запрос (тут я другой класс подключаю). В ответ от
сервера приходит объект с кучей всего, из этой кучи мне надо выбрать 25 значений и снова дать юзеру выбрать из них. Какие-то поля
обязательные, какие-то нет, но после нажатия на сабмит второй раз, надо послать на сервер два статичных поля, и - вот тут самая
сложность - все, что было прислано на второй запрос, в том же порядке, но с измененным полем selected, если значение было выбрано.
Никак не получается собрать объект для посылки. Там массив на массиве, три или даже четыре уровня вложенности. К тому же посылать
требуется не все, а по схеме. Вот эта схема.


<s:element name="PerformRepricing">
<s:complexType>
<s:sequence>
<s:element name="ww" type="s0:SelectedCovers" minOccurs="0"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="SelectedCovers">
<s:sequence>
<s:element name="OfferCode" type="s:string" minOccurs="0"/>
<s:element name="errordata" type="s:string" minOccurs="0"/>
<s:element name="PartnerData" type="s:string" minOccurs="0"/>
<s:element name="OfferDetails" type="s0:ArrayOfSelCoversSelCovers" minOccurs="0"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfSelCoversSelCovers">
<s:sequence>
<s:element name="SelCovers" type="s0:SelCovers" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</s:sequence>
</s:complexType>
<s:complexType name="SelCovers">
<s:sequence>
<s:element name="Capital" type="s0:Currency" minOccurs="0"/>
<s:element name="Code" type="s:string" minOccurs="0"/>
<s:element name="Release" type="s0:Currency" minOccurs="0"/>
<s:element name="selected" type="s:boolean" minOccurs="0"/>
</s:sequence>
</s:complexType>



Функция PerformRepricing принимает объект SelectedCovers, который состоит из 4-х элементов.
OfferCode у меня есть, это константа. errordata - это для ответа, оставляем пустым. PartnerDate - тоже константа. OfferDetails - массив типа
ArrayOfSelCoversSelCovers, в котором один элемент типа SelCovers. А SelCovers - тоже массив из 4-х элементов. И тут я впала в ступор. Дело
в том, что эти элементы массива у меня есть, но они - тоже массивы! А тут требуется строка. Где я им возьму строку? Там массив из двух
значений - min и max. Вот это - minOccurs="0" - может, и означает, что надо взять минимальное значение? Или что это? И как можно в цикле
создать 25 экземпляров одного класса? У меня почему-то только последнее значение подставляется... что-то не так делаю.

Между первым и вторым запросом я передавала переменные в сессии (их там всего две, одна из формы и одна константа, полученная из SOAP).
А вот между вторым и третьим шагом надо уже кучу всего передавать. Боюсь, в сессиях запутаюсь. Если все будет в одном классе, то после
отработки одной функции можно будет ее результат использовать в другой?

  Ответить  
 
 автор: indexer   (04.05.2015 в 04:08)   письмо автору
 
   для: elenaki   (27.04.2015 в 19:59)
 

Нет никакой надобности создавать в цикле 25 экземпляров класса.
Класс может содержать собственные константы, переменные (называемые свойствами) и функции (называемые методами).
Стало быть, после обработки одним методом результат использовать в другом методе можно. Для этого может быть использована псевдо-переменная $this доступна в том случае, если метод был вызван в контексте объекта. $this является ссылкой на вызываемый объект . Обычно это тот объект, которому принадлежит вызванный метод, но может быть и другой объект, если метод был вызван статически из контекста другого объекта.

RTFM SOAP
http://php.net/manual/ru/book.soap.php обратите внимание на http://php.net/manual/ru/book.soap.php#83409

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования