Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hunternh

amfphp

Recommended Posts

Gostaria de saber se o pessoal estaria interessado em um tutorial de como instalar e utilizar o AMF com PHP, em AS2 e AS3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hoje anoite eu posto o tutorial.

 

AMF é o Flash Remoting, com ele você pode acessar classes php diretamente, podendo utilizar as funções dessas mesmas classes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vamos começar, primeira coisa a se fazer é o download das classes do Flash Remoting (para AS2, pois AS3 já possui suporte nativo):

 

http://rapidshare.com/files/83849342/mx.zip.html

 

depois de descompactar o arquivo mx.zip, copie as pastas data, remoting, rpc e services para C:\Documents and Settings\Nome do seu usuário\Configurações locais\Dados de aplicativos\Adobe\Flash CS3\en\Configuration\Classes\mx\, mande substituir todos os arquivos.

 

Agora é preciso fazer o download do AMFPHP http://sourceforge.net/project/showfiles.p..._id=72483#files.

 

Documentação e exemplos no endereço: http://www.amfphp.org/

 

Hospede a pasta do AMFPHP no seu servidor local ou em um de sua preferência. A classe php que será usada nesse exemplo (e todas a que você utilizar com o AMF) deve ser colocada no diretório services do AMFPHP.

 

Agora vamos aos arquivos que serão utilizados nesse exemplo:

 

ConexaoAS2.as

// importa as bibliotecas necessarias
import mx.remoting.Service;
import mx.services.Log;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;

class ConexaoAS2
{
	//define o endereço do gateway
	private var gateway:String;
	// define se tem log ou não
	private var log:Log;
	//declara o nome da classe php que será chamada
	private var classe:String;
	// declara o serviço
	private var servico:Service;
	// construtor
	public function ConexaoAS2(_gateway:String,_classe:String)
	{
		gateway	= _gateway;
		classe	= _classe;
		servico	= new Service(gateway,log,classe,null,null);
		log		= new Log;
	}
	
	public function get funcoes():Service
	{
		return servico;
	}
}

 

Crie uma nova aplicação para AS2 (esse exemplo é bem simples sem animação, só vai retornar valores para mostrar a utilização), abra a janela de AS da sua aplicação e cole o seguinte código:

 

import ConexaoAS2;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;

// Cotacao nessa linha referesse ao nome da classe php
// importante o nome do arquivo php deve ser o mesmo nome da classe
var teste:ConexaoAS2 = new ConexaoAS2("http://localhost/amfphp/gateway.php","Cotacao");

function retornoC(re:ResultEvent)
{
	trace("Dólar comercial: "+re.result);
}

function retornoP(re:ResultEvent)
{
	trace("Dólar paralelo: "+re.result);
}

//função para exibir erros ocorridos
function pc_Erro(re:FaultEvent) {
	//re.fault.faultstring é o que retorna de erro do php ou da conexão
	trace("Erro: " + re.fault.faultstring);
}

// aqui está sendo acessado as funções da classe php ex. getDolarC()
var pc:PendingCall = teste.funcoes.getDolarC();
pc.responder=new RelayResponder(this,"retornoC","pc_Erro");

var pc:PendingCall = teste.funcoes.getDolarP();
pc.responder=new RelayResponder(this,"retornoP","pc_Erro");

 

agora a classe php:

 

Cotacao.php

<?php
class Cotacao
{
	private $dolarc;
	private $dolarp;
	
	public function __construct()
	{
		// essa verificação é para segurança, se não for o swf que você criou bloqueia o acesso a classe
		if(!eregi("http://localhost/cotacao.swf",$_SERVER['HTTP_REFERER'])) exit;
		
		$this->dolarc = "1,78";
		$this->dolarp = "1,85";
	}
	
	public function getDolarC()
	{
		return $this->dolarc;
	}
	
	public function getDolarP()
	{
		return $this->dolarp;
	}
}
?>

No próximo post, o exemplo de como utilizar com AS3, postem suas dúvidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal hunternh, bem resumido mas já foi o bastante para o pessoal testar,

 

 

acho que só faltou um exemplo de como passar um parâmetro do flash para o PHP

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é bem simples, nesse caso a função php deve estar esperando um valor como parâmetro:

 

ex.

public function multiplicar($valor,$multiplicador)
{
	return ($valor*$multiplicador);
}

no flash fica assim:

 

var pc:PendingCall = teste.funcoes.multiplicar(23,6);

no caso de querer passar vários valores para o php, o ideal é criar um objeto no flash, que será interpretado como um array pelo php:

 

no flash

var valores = new Object();
valores.nome = "hunternh";

no php será interpretado da seguinte maneira $valores['nome'] que conterá a string "hunternh".

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal!

 

Então, eu usava muito o amfphp com as2 mas parei de usar por alguns motivos.

O amfphp, não sei se é só comigo tem sérios problemas com as versões de php, posso estar errado, mas sempre acontece algum problema quando a versões de php diferentes.

Mas só tentei com versões 4 e 5, e as versões atualizadas dentro destas como, 4.2... etc.

Achava muito bom, muito fácil trocar dados diretos entre php e flash e conectando ao banco.

Outro coisa muito boa é a troca de arrays! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Se alguém que conheça amfphp e puder comentar sobre as coisas acima, por favor, postem, quanto mais informação melhor!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pude responder antes, mas esse fim de semana pretendo colocar um exemplo no ar, para o pessoal baixar e testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vantagem grande do AMFPHP, roda em HTTPS sem dar problemas.

Com o Actionscript 2 é melhor usar AMFPHP tanto para enviar, quanto para receber dados, ja com o Actionscript 3 temos algumas fica melhor no flash assim:

receber conteudo: XML

enviar coneudo:AMFPHP

enviar e receber:AMFPHP

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vejo que as vantagens são:

 

- o ganho de performance, pois a conexão com AMF é beeeem mais rápida

- Você passa os paramentos com se chamasse uma função PHP do flash, usando XML ou LoadVars os valores do flash

são transformados para o tipo texto para depois ir para o PHP, no retorno a mesma coisa o PHP gera um texto e manda para o flash que tem que converter esse texto para os valores mesmo, no AMF é flash conversando com PHP direto, o legal disso é que é possível tipificar os parâmetros, por isso é possível passar um Array do flash <--> PHP

 

As Desvantagens são

 

-Dór de cabeça nos 1º passos [tongue.gif] , mas depois que esta pronto é uma maravilha

 

eu recomendaria usar o AMF para aplicações média e grandes, se for para passar só umas poucas variáveis seria mais fácil usar o XML mesmo, a não ser que você ja tenha uma estrutura do AMFPHP feita no seu site e funcionando, uma dica legal é criar uma classe no flash para agilizar o desenvolvimento, vou dar uma arrumada aqui na classe que eu uso o posto mais tarde

 

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo prático do uso do AMF, fiz um form para envio de e-mail, não envia o e-mail, mas mostra como enviar os dados para o php e o mesmo retorna se houve ou não um erro:

 

http://rapidshare.com/files/95943693/form.rar.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falei do as3 ai e esqueci de te agradecer e parabenizar! rs

 

muito bom e esclarecedor seu tutorial ;)!

Me ajudou inclusive, pois ainda não havia explorado esse recurso embora jah tive-se ouvido falar!

No meu próximo projeto, o AMFPHP jah tah com seu lugarzinho garantido http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif rs

 

Muito obrigado e parabéns. ^_^ continue sempre assim.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.