Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Flex + php, вызываем напрямую методы php классов 
:(
    Опции темы
AlDev
Дата 11.3.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



Итак, понадобиться AMFPHP:

Установка требуемого
1. Качаем AMFPHP с http://www.amfphp.org/
2. Распаковываем архив в docroot вашего проекта. Например у меня проект amfSample (для Apache):
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\amfSample
Получаем в папке amfSample несколько php файлов, such as 
gateway.php
advancedsettings.php
debuggateway.php
3. Открываем в браузере gateway:
http://localhost/amfSample/gateway.php
Если выдается:
amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash.
Значит все клево и можно идти дальше. 
Если же такого не будет, открывайте gateway.php в редакторе и выставляйте ваши настройки.
Там все подробно задокументировано, по сему не буду на этом останавливаться.
4. Подробности по установке, конфигу и т.п. смотрите тут:
http://www.amfphp.org/docs/


Теперь обратимся непосредственно к вопросу создания и манипулирования объектами, которые будут доступны из Flex приложения.
Создадим класс, который будет использоваться Flex-ом:

Код

<?php
class HelloService {
  function getHello() {
    return "Hello, world!";
  }
}
?> 


И сохраним его в файле services/HelloService.php
Все? Куй. Пошли дальше:
Определим доступные для вызова из Flex методы:
Код

<?php
class HelloService {
  
  function HelloService() {
    $this->methodTable = array(
    "getHello" => array(
            "description" => "Get hello message",
            "arguments" => array(),
            "access" => "remote"
            )
    );
  }
  
  function getHello() {
    return "Hello, world!";
  }
}
?> 
 

Массив methodTable описывает доступность методов для вызова. 
Вот и все.
Теперь для просмотра существующих сервисов смотрим:
http://localhost/amfSample/browser/

Уаля. Теперь открываем Flex и фперед:

Код

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
        import mx.controls.Alert;
        import flash.net.NetConnection;
        
        private var connection:NetConnection = getConnection();
        
        private static function getConnection():NetConnection {
            var c:NetConnection = new NetConnection();
            c.objectEncoding = ObjectEncoding.AMF0;
            c.connect("http://localhost/amfSample/gateway.php");
            return c;
        }
        
        private function callGetHello():void {
            connection.call("HelloService.getHello",new Responder(resultHandler, statusHandler));
        }
        
        private function resultHandler(result:String):void {
            Alert.show("Result: "+result);
        }
        
        private function statusHandler(status:Object):void {
            Alert.show("Fault: "+status.description);
        }
        ]]>
    </mx:Script>
    <mx:Button label="call HelloService.getHello()" click="callGetHello()" />
</mx:Application>

getConnection создает NetConnection для соединения со шлюзом и говорит, что использовать старый AMF протокол (“до flash 9-й =)”).

Ну а дальше понятно.
connection.call("HelloService.getHello",new Responder(resultHandler, statusHandler));

Говорит, что надо вызвать метод getHello у HelloService. При получении успешного результата вызвать resultHandler, а при получении неуспешного – statusHandler.

Пускаем. Наслаждаемся.

© http://z3labs.com/2007/03/11/flex-php-amfphp/

Это сообщение отредактировал(а) AlDev - 11.3.2007, 15:07
PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 11.3.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 18



А теперь объясни как более сложными объектами манипулировать, например передать dom документ )


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 11.3.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 11.3.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 18



Гы, ну конечно ассоцированный массив лучше в мапе бы смотрелся, но тоже ничего спа за инфу... )


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Alex_B
Дата 4.10.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Далаю по примеру и вот такая ошибка:

Fault: The class {HelloService} could not be found under the class path {z:\home\test2.ru\www\dbase\amfphp\services/HelloService.php}

Слеши видимо не в ту сторону, а как такое справить?

Спасибо.
PM MAIL   Вверх
AlDev
Дата 24.10.2007, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 3
Всего: 50



Alex_B, эм, на сервере пускать надо. откуда взялся z?
PM MAIL WWW ICQ YIM MSN   Вверх
Maksys
Дата 13.6.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17





--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flex | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.