Neste artigo fiz um resumo de um texto do evangelista da Adobe Mihai Corlan, que desenvolve um trabalho muito legal com seus artigos sobre Flex. Aqui, vou colocar algumas partes do artigo e, no final, há um link para o PDF com o texto completo!
É válido lembrar que esta é uma tradução fiel, por isso o tempo verbal do artigo está na primeira pessoa, e sempre que você ler um “eu”, saiba que é o Mihai Corlan, e não o Daniel Schmitz.
“Eu quero compartilhar com vocês algumas coisas que são
específicas para o Flex em relação ao PHP. Ao mesmo tempo, quero fazer uma
introdução do Flex através de uma comparação com o PHP, sempre que esta
comparação fizer sentido. Então, este artigo é para:
- Desenvolvedores PHP que
querem aprender mais sobre Flex e Action Script 3, além de uma simples
definição sobre o que são estas tecnologias. - Desenvolvedores PHP que já
fizeram a sua primeira tentativa de codificação em uma aplicação Flex, e
desejam ter uma melhor compreensão sobre o Flex.
O que não tem neste artigo? Não é a minha intenção convertê-lo nem te convencer de que o Flex é melhor que X ou Y. Eu acredito
seriamente que existem diversos tipos de projetos e que eles podem e devem ser
feitos com diferentes ferramentas. E como a performance, maximização de
retorno em investimento e usabilidade são prioridades, não existe uma
ferramenta universal para isso.
O que é Flex?
A resposta mais
simples é: Flex é apenas outra maneira de criar uma aplicação em Flash. Uma
aplicação Flex é compilada em um arquivo SWF, que roda dentro do navegador
através do Flash Player. Por que precisamos de outra maneira de criar
aplicações em Flash? Tradicionalmente, as aplicações em Flash foram criadas
usando as ferramentas Flash. Se você olhar essa ferramenta*, vai perceber que ela foi criada para
Designers. Existe um “stage”, a linha do
tempo, ferramentas de desenho, e assim por diante.
* Nota do Tradutor: o
autor refere-se ao Adobe Flash CS4
Flex: duas linguagens, um único framework
Sob o aspecto do
Flex, você irá encontrar o seguinte:
Duas linguagens:
MXML e Action Script 3. Flex oferece duas linguagens para que se possa criar
uma aplicação Flex. Nos próximos capítulos, iremos estudar mais a fundo cada
uma.
- Uma rica biblioteca de componentes
- Um compilador e um debugador
- Ferramentas disponíveis através de linha de comando, para
compilação e debug de uma aplicação flex.
Introdução à linguagem MXML
MXML é uma
linguagem de marcação de texto, baseada em XML. Em uma aplicação Flex você usa
MXML para rapidamente criar a estrutura/aparência de sua aplicação. No Flex,
qualquer coisa que você pode fazer utilizando MXML você também pode fazer
usando Action Script 3. O inverso, porém, não é verdade.
Se você pode usar o
ActionScript 3 para fazer qualquer coisa que você faz com MXML, por que utilizar
MXML primeiro? Geralmente é muito mais fácil acompanhar e compreender uma
estrutura de interface usando uma linguagem XML (declarativa) que a linguagem
ActionScript (imperativa). E isso se traduz em menos código para escrever ao
criar uma interface. Também é muito mais fácil construir ferramentas para
linguagens declarativas do que linguagens imperativas. Aqui está um exemplo do
“Hello World” implementado com a linguagem MXML:
1: <Label text = "Hello World!" fontsize = "14" color = "red" x = "100" y = "50" /> Nesse código, eu
uso um componente Flex chamado Label,
utilizado para exibir texto na tela da aplicação. Eu defini o atributo text para o texto que eu quero que seja
exibido. Além disso, eu quis customizar (um pouco) a aparência e a posição do Label na tela. Para isso, eu uso os
atributos fontSize, color, x e y.
Agora, considere o
mesmo exemplo implementado usando
ActionScript 3:
1: var myLabel = new Label();<br /> 2: myLabel.text = "Hello World!";<br /> 3: myLabel.setStyle("fontSize", "14");<br /> 4: myLabel.setStyle("color", "red");<br /> 5: myLabel.x = 100;<br /> 6: myLabel.y = 50;<br /> 7: addChild(myLabel);Eu fiz sete linhas
de código para fazer o que eu fiz em MXML com somente uma tag e alguns
atributos. Agora, imagine que em uma aplicação real você tenha que fazer muitos
controles, agrupados em diversos lugares. É muito mais fácil manter o código
que está escrito em MXML do que código escrito com centenas de linhas em
ActionScript.
Estilos CSS
Neste ponto você
deve estar se perguntando se é possível alterar a aparência visual dos
componentes do Flex. Existe algo parecido com CSS para HTML? A resposta é sim,
Flex suporta CSS. Em Flex 4, o uso de CSS é estendido para permitir a definição
de estilos, não só com base em nome de classe, mas em identificações, para
permitir pseudo-seletores (por exemplo, para um botão que você tem o seletor
para baixo, sobre o seletor, e assim por diante) e muito mais.
Tal como em HTML,
podem ser definidos estilos inline
(dentro do próprio código MXML) ou em um arquivo separado. Vamos voltar para o
componente personalizado, FormButtons,
e definir alguns estilos. Se você optar por definir os estilos em um arquivo
separado, você usa a tag style e
define o caminho para o arquivo de estilo dentro do atributo de origem.
1: <? Xml version = "1.0" encoding = "UTF-8"? <br />2: <! Componente MXML - FormButtons.mxml um arquivo chamado -> Introdução à linguagem Action Script 3
Action Script 3 é
uma linguagem de script orientada a objetos, que é (na maioria das vezes)
segura. AcrionScript 3 é baseado na especificação ECMAScript 3 (EMCA-262). Além
disso, algumas características suas são alinhados com a proposta do ECMAScript
4. Descobri que é mais fácil explicar o ActionScript 3 para alguém que não
conhece a linguagem, da seguinte forma: ActionScript parece uma mistura de JavaScript e Java, além de ter a sua própria identidade. Na verdade, o Javascript
é uma outra linguagem baseada nas especificações do ECMAScript, assim, é
natural que tenha coisas em comum com o ActionScript.
Como eu disse
antes, o Flash Player pode trabalhar com duas linguagens: AcrionScript 2 e
ActionScript 3. Internamente, ela usa duas máquinas virtuais diferentes, para
trabalhar com estas duas linguagens (ActionScript3 e AVM2 Virtual Machine
surgiu no Flash Player 9). ActionScript 3 é constituída de um núcleo (tipos,
constantes, e assim por diante) e da API do Flash Player (esta API fornece aos desenvolvedores o acesso a
todas as funcionalidades do Flash Player através da lista de exibição API, 3D
API, API de desenho, animações, e assim por diante). Neste artigo, vou me
concentrar nesta linguagem. Aqui está um bom artigo introdutório sobre o ActionScript3.
Principais diferenças entre AS3 e PHP
Aqui estão as
diferenças principais:
- Nome do arquivo onde a classe é armazenada.
- No PHP você pode definir uma classe em um arquivo que pode ser
chamado de qualquer maneira. - Em AS3, o nome do arquivo deve ser o mesmo que o nome da classe
(se a classe é chamada SimpleClass,
em seguida, o arquivo deve ser SimpleClass.as).
Packages VS Namespaces
- Em PHP você pode usar Namespaces,
para evitar colisões no nome das classes. - Em AS3, você pode usar Packages,
mas quando criar uma classe que está no Package org.corlan,
significa que a classe está dentro da pasta org / corlan a partir da classe de origem do Flex. O Package
se traduz em uma estrutura de pastas. Packages são utilizados em conjunto
com visibilidade de classes, que podem esconder determinadas classes que
estão fora do projeto (mais sobre isso mais tarde).
require/include VS import
- No PHP, normalmente, você inclui o arquivo onde a classe é
definida usando a função require_once.
A partir do PHP 5, você pode
definir a função __autoload() e
fazer o require_once ou include_once nesta função em vez
de escrever uma lista de arquivos a serem incluídos para cada arquivo. - Em AS3, você usa o comando import
para incluir a classe desejada. No entanto, se você quiser incluir todas
as classes do Package org.corlan, você pode usar o
comando import usando asterisco: import org.corlan.*. Outra
diferença é que o compilador AS3 irá somente compilar as classes que são
realmente utilizados em seu código (ou seja, quando a instância é
criada).
Chamar um método / membro de uma instância:
- No PHP, você usa o operador “->”
- No AS3, você usa o operador ponto: “.”
Agora, vamos ver os
modificadores de classe, métodos e membros.
Vou começar com
modificadores de classe:
- PHP tem
final e abstract; public está
implícito, todas as classes são publicas em PHP. - AS3 tem
public, internal, final e dynamic. Se você não especificar
qualquer modificador de acesso (public ou
internal), então a classe é, por
padrão, internal, o que significa que só podem ser acessados
pelas classes do mesmo Package. Public e final têm o mesmo significado em PHP; abstract não existe no AS3, mas você pode contornar esta limitação usando
interfaces. Dynamic marca a classe
como uma classe que pode ser alterada em tempo de execução, modificando os
membros existentes ou adicionando novos
Modificadores para
propriedades de classes:
- PHP: public, private,
protected, static. - AS3 tem os mesmos modificadores de PHP e mais o internal. Internal é usado para
fazer propriedades disponíveis somente dentro do mesmo pacote. Quando
nenhum modificador for especificado, o internal
é usado.
Modificadores para
métodos das classes:
- PHP tem public,
private, protected, static, final e abstract. - AS3
tem: public, private, static, final,
internal e override. Abstract não
existe no AS3; Internal deixa os métodos disponíveis somente nas classes
que estão no mesmo Package.
Construtores em PHP
podem ser marcados como private, você
pode definir um construtor com o mesmo nome da classe ou você pode usar os
métodos especiais __construct() e __destruct(). O construtor do AS3 é sempre
público e deve ter o mesmo nome do nome da classe. Se nada for fornecido, o
compilador irá criar um construtor por baixo dos panos.
Membros estáticos
ou métodos estáticos são acessados:
- Em PHP usando ClassName::propertyName
Em
AS3, usando ClasssName.propertyName. No entanto, dentro da mesma classe, você
não precisar informar o nome da classe.
Uso do “this”
- Em PHP você usa a variável de classe especial $this para referenciar os membros da classe
(variáveis/métodos) definidos na mesma classe: $this->myVar = 22; - Em AS3 você usa o mesmo this:
this.myVar = 22; entretanto, você pode tirar o this e usar somente myVar=22;
O documento completo
Este artigo foi apenas um aperitivo. Todo o artigo possui mais de 50 páginas e por ser acessado neste link. Aproveitem!







