Nis
11
2010

Flash Builder 4 ve Amfphp

Merhaba arkadaşlar. Bu yazımda size geçtiğimiz günlerde çıkan Flash Builder 4 ile AmfPHP ilişkisini anlatacağım. Daha önce Flex Builder ile anlatmıştım aynı konuyu ama şimdi ona bakınca ne kadar çok uğraşmışım diye kendime gülüyorum.

Öncelikle basit bir veritabanı yapısı oluşturalım. Veritabanımın adı “denemeler” buraya adı “fb_ilkDeneme” isimli bir tablo oluşturuyoruz. Ve “id,isim,aciklama” alanlarını ekliyoruz. İçerisine birkaç bilgi girelim boş kalmasın.

Şimdi gelelim kodlamaya. Öncelikle amfphp yi şu adresten indirip localhostumuzda uygun bir yere çıkartıyoruz. Services klasörü içerisine yeni bir klasör oluşturup adını flashbuilder olarak değiştirelim. Ben öyle yaptım siz adını farklı bir şey yapabilirisiniz. Bunu yapmamızın nedeni her yeni projenin kullandığı amfphp dosyalarının ayrı ayrı klasörlenmesi. Kısaca düzen :)

Sıra geldi database iletişimini sağlayacak olan sınıfımıza. Ben bunun için wordpress inde kullandığı ezSQL’i kullanmayı tercih ediyorum. Şuradan indirebilir buradan da yakuter’in ezSQL’i anlattığı yazısına ulaşabilirsiniz. Bu yazıyı okumuş gerekli örnek uygulamaları yapmış ve neyin ne olduğunu bildiğinizi varsayıyorum :) Daha sonra kullanımına yönelik bir makale yazacağım.

Oluşturduğumuz flashbuilder klasörü içine bir adet php sınıfı oluşturmamız lazım. Şimdi kodlamamıza koyulalım. Kodlar aşağıda ve açıklamalarını da hemen altlarına yazdım.

PHP:
  1. <?php
  2. include_once "ez_sql_core.php";
  3. include_once "ez_sql_mysql.php";
  4. //Bu sıraya göre include etmemiz gerekiyor yoksa hata verebiliyor.
  5.  
  6. class deneme extends ezSQL_mysql
  7. {
  8.     //sınıfımızın adı deneme.
  9.     //extends kullandım başka türlü ezSQL içindeki fonksiyonlara ulaşamıyorum
  10.     //bunun dışında yöntem bilen varsa lütfen paylaşsın
  11.     function deneme()
  12.     {
  13.         //sınıf içinde ilk çalışacak fonksiyon.
  14.         //burada benim kendi değişkenlerimi (kullanıcı adı veritabanı adı vs.) tanımladığım dosyayı çağırıyorum.
  15.         include_once "db.php";
  16.         $this->ezSQL_mysql ( DB_USER, DB_PASS, DB_NAME, DB_HOST );
  17.         //son olarakta bağlantı kuruyorum.
  18.     }
  19.  
  20.     function ilkBilgi($veri)
  21.     {
  22.         extract($veri);
  23.         //$veri değişkenine gelen bilgileri dışarı çıkartıp her birini değişken olarak kullanmak için extract fonksiyonunu kullanıyoruz. Bu fonksiyon hakkında daha fazla bilgi için http://php.net/manual/en/function.extract.php
  24.  
  25.         $bilgi = $this->get_row("select * from rooms where id=".$id);
  26.         //burada id si 1 olan satırı istedim.
  27.         return $bilgi;
  28.         //ve gelen bilgiyi geri gönderdim. İşte bu kadar.
  29.     }
  30. }

Burada küçük bir açıklama yapmak istiyorum. $bilgi değişkenine gelen veri şu şekilde.
(Object)#0
id = "1"
isim = "ismail"
aciklama= "ilk aciklama satırı…."

Yani bize gelen veri object formatında. Buda işimizi çok kolaylaştırıyor. İstediğimiz bilgiye $bilgi->name şeklinde kolayca ulaşabiliyoruz. Bu flash builder içerisinde de işimizi çok kolaylaştıracak.
Şimdi ise actionscript kodlarımıza bakalım. Sahnemizde bir adet buton bir adet textarea nesnemiz var.

Actionscript:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.                xmlns:s="library://ns.adobe.com/flex/spark"
  4.                xmlns:mx="library://ns.adobe.com/flex/mx">
  5.     <fx:Script>
  6.         <![CDATA[
  7.             private var baglantiStr:String="http://localhost/amfphp/gateway.php";
  8. //hangi yol üzerinden iletişim kurulacak bunu belirttik.
  9.             private var phpyol:String="flashbuilder.deneme.";
  10. //bu değişken ise services klasörü içindeki php dosyamızı belirtiyor. En sonunda bir nokta daha var. Burada oluşturduğumuz klasör içindeki fonksiyonlara ulaşmak için şu yazımı kullanıyoruz. “Flashbuilder.deneme.ilkBilgi” bu şekilde o fonksiyona ulaşıyoruz. Ama bana her seferinde “flashbuilder.deneme” yazmak zor geliyor açıkcası o yüzden böyle değişkene bağladım.
  11.  
  12.             public function amfphp(yol:String, veriler:Object, callback:Function):void
  13.             {
  14.                 var baglanti:NetConnection=new NetConnection()
  15.                 baglanti.connect(baglantiStr);
  16.                 var geri:Responder=new Responder(callback);
  17.                 baglanti.call(phpyol + yol, geri, veriler);
  18.             }
  19.  
  20.             public function verileriGetirFnk():void
  21.             {
  22.                 var veri:Object={id: 1};
  23.                 amfphp("ilkBilgi", veri, getir);
  24.             }
  25.  
  26.             public function getir(e:Object):void
  27.             {
  28.                 yaziAlani.text=e.aciklama;
  29.             }
  30.         ]]>
  31.     </fx:Script>
  32.  
  33.     <s:TextArea x="10"
  34.             y="10"
  35.             width="497"
  36.             height="224"
  37.             id="yaziAlani"/>
  38.     <s:Button x="515"
  39.               y="10"
  40.           label="Verileri Getir"
  41.           click="verileriGetirFnk()"/>
  42. </s:Application>

amfphp() fonksiyonu üç adet değişken kabul ediyor. Bunlar yol veriler ve callback. Yol değişkeni verilerimizi hangi fonksiyona göndereceğimizi belirtiyor. Veriler ise fonksiyona göndereceğimiz verileri taşıyor ve object formatında. Bu sayede php tarafında extract() ile içerisini boşaltabiliyoruz. Callback ise php den dönen verileri alıp işleyen fonksiyon. Daha sonra buraya baglanti isminde bir NetConnection nesnesi tanımlıyoruz. Bu baglanti nesnemiz ile baglantiStr de belirttiğimiz adrese bağlantıyı gerçekleştiriyoruz. Daha sonra bir Responder oluşturup callback i buraya atıyoruz. Burada dikkat edilecek nokta şu: iki farklı responder var. Biz flash.net sınıfına bağlı olanı seçiyoruz.

Daha sonra bu baglanti üzerinden call() fonksiyonu ile verilerimizi gönderiyoruz. Fark ettiyseniz phpyol ile fonksiyon ismini taşıyan yol değişkenimi birleştirdim. Böylelikle daha önce yazdığım şekil ortaya çıktı. “flashbuilder.deneme.ilkBilgi”

verileriGetirFnk Mouse tarafından tetiklenen fonksiyonumuz. Burada veri isminde bir obje oluşturup içine göndereceğimiz veriyi düzgün şekilde yazıyoruz. Daha sonra bunu amfphp ye gönderiyoruz. Burada “ilkBilgi” php dosyasındaki fonksiyon adını veri oluşturduğumuz veri değişkenini getir ise php den dönen verilerin işleneceği fonksiyon adını belirtiyor.

getir fonksiyonda ise dönen verimizi istediğimiz şekilde kullanabiliriz. Çünkü buraya gelen veri object şeklinde zaten. Kullanımı çok basit. Textarea ya yazdıracağımız veriyi e.aciklama şeklinde tanımlıyoruz. Hepsi bu kadar. Veritabanından veriyi çektik ve yazdırdık.

Veritabanına veri kaydı için ise kaydedeceğimiz verileri gönderiyoruz php ile kayıt işlemini yapıyoruz. Bu kadar basit. Diğerinden daha kolay değil mi?

Herkese iyi çalışmalar.

Related Posts

About the Author:

2010 Dokuz Eylül Mezunu | Flash/Flex Developer | Actionscript Lover | Addicted to Php/MySql | Junior Android&iOS Developer

Leave a comment

Kategoriler