PHP-GTK2 Nedir?

PHP-GTK2 nedir. ? Ne işe yarar. Bunları Öğrenelim
PHP-GTK2 ile ilgili php.org.tr adresinde UMUT IŞIK tarafından çok güzel bir şekilde anlatılımış.Aşağıdaki yazı tamamen onun yazısıdır.09 Kasım 2005 tarihli yazıdır.

Kuşkusuz PHP, Internet omurgasına bağlı sinir hücrelerinin en önemlilerinden biridir. Bugün milyonlarca web sitesi PHP aracılığıyla ziyaretçileriyle etkileşimli bir çatı altında çalışabilmektedir. PHP, Microsoft gibi bir yazılım devini, betik dilleri yarışında bir çok açıdan geride bırakmış, Perl‘den doğmasına rağmen onu da geride bırakmış ve sanal dünyaya en hakim betik dili olmuştur.
.NET‘in, Microsoft tarafından J2EE‘ye karşı hamle olarak ileri sürülmesi, özgür yazılımcıları da heyecanlandırmış ve yeni arayışlara itmiştir. İşte PHP-GTK bu yeni arayışın ilk ürünlerinden biridir. Tanım: PHP-GTK, GTK+ fonksiyonlarını kullanıp, tek başına çalışan, platform bağımsız, kendilerine ait GUI‘lere sahip uygulamalar geliştirebilmemiz için ortaya çıkarılmış yeni bir programlama teknolojisidir. Her ne kadar bir PHP Eklentisi olarak adlandırılsa da yüklendiği görev üst düzeydir.

Bu teknoloji ile C++ içinde GTK fonksiyonlarını kullanmak ile PHP içinde GTK fonksiyonlarını kullanmak artık çıktı üretimi açısından fark etmemektedir.

Bununla beraber PHP-GTK istemci taraflı çalışması için tasarlanmıştır. Web ortamında kullanılmaz. Yukarıda ayrıntılandırdığımız gibi PHP-GTK‘nın ortaya çıkış amacı masaüstünde, tarayıcıdan bağımsız, ’standalone’ programlar oluşturmaktır.

Bu da nereden çıktı? Güzel güzel Delphi, Visual Basic kullanıyorduk Windows için program yazarken.

Linux‘ta gcc C derleyicisi neyimize yetmiyordu ki? C ‘de yıllardır var olan süper bir dil… Hele bir de Ansi C standartlarında yazarsak tam bir çoklu platform programcığına sahip oluruz, değil mi?

Tam olarak değil, hepimiz farkındayız ki Ansi C ile yazdığımız programcıklar bile bazen (benim gibi acemi programcıların bilgisayarında çoğunlukla..) iki sistemde çalışmamazlık edebiliyor. Bunda işlemci mimarisinden, bağlı kütüphanelerdeki bir virgülün farklılığına kadar bir çok etken söz konusu. Bununla beraber Windows için C++ ile geliştirilen bir uygulamanın da ne kadar zor yazıldığını, ne kadar uğraş gerektirdiğini bu işle uğraşan her programcı az çok bilmektedir.

PHP geliştiricileri, biz PHP programcıları gibi Windows ve Linux‘ta birlikte çalışabilecek bir program yazmak için alt yapının tam olarak oturmadığının farkındaydılar. Her ne kadar Ansi C gibi bir standart ile ya da Java gibi çoklu platform teknolojisi ile bunun altından kalkılmaya çalışılıyorsa da eminiz ki Ansi C standartlarında kod yazmak, ya da C++’a göre daha kolay olan fakat geliştirilen uygulamaların hantal çalıştığı Java teknolojisi Ömer Balyalı gibi bir lise öğrencisinin PHP kodlarken yaşadığı rahatlığı ona sunmayacaktı.

Andrei Zmievski bunların farkında bir programcı olarak PHP‘yi standartlaşan bir betik dili olmaktan çıkarıp tarayıcı bağımsız kullanıcı arabirimi bulunan bir dil haline getirmek için PHP-GTK‘yı programlamaya başladı.

Çok değil bir kaç yıl önce, Linux popülaritesinin zirvesine ulaşırken, kullanıcılar bir şeylerin eksik olduğunun farkına varmışlardı. Penguenin sevimli görünüşü grafik ve kullanıcı arabirimindeki eksiklikler nedeniyle kullanıcıya bir soğukluk veriyordu. Fanatikler -ki sisteme yararlıdırlar bence- dışında ki herkes bu gerçeğin farkındaydı.

Bunun farkına varan linux topluluğu o sıralarda sisteme bir fotoğraf stüdyosunun dahil edilmesini düşünüyordu. GIMP adı verilen projede herşey çok güzel başladı fakat işler düşünüldüğü kadar hızlı ilerlemeyecekti. Bir süre aynı yolda devam eden topluluk bir standartlar kütüphanesinin GIMP‘in araç kutusu için kesin bir gereklilik olduğu kanısına ulaştılar: GTK+ ( G IMP T ool K it)

GTK+ sadece GIMP ( G NU I mage M anipulation P rogram ) için oluşturulan bir standartlar kütüphanesiydi. Fakat bu kütüphane, yazılım dünyasını şaşırtacak biçimde oldukça hızlı ilerledi ve linux dağıtımlarının en önemli iki kabuğundan GNOME‘un merkezi bir parçası haline geldi.

GTK+‘nın hedefe yönelmiş olarak hareket ettiği, yukarıdaki gelişmelerin hemen ardından Windows ve BeOS sürümlerinin çıkması ile gayet anlaşılır hale geldi. Bu hamlelerin ardından, Zmievski , PHP ile GTK‘yı bir PHP eklentisinde toplayarak geleceğin çoklu platform teknolojisini oluşturmak için kolları sıvadı.

ve Bugün.. Artık elimizde platform bağımsız, kullanıcı arabirimine sahip ve tek başına çalışabilen uygulamaları, Linux, Windows ve BeOS sistemlerinde çalıştıran bir programlama teknolojisinin ilk kararlı sürümü var: PHP-GTK 1.0.0

Bu teknolojiyi şu an bilgisayarınıza indirme ve deneme şansına sahipsiniz. Benim bilgisayarımda PHP-GTK 1.0 kararlı sürümü yüklü şu an. PHP-GTK şu aşamada GTK+ Sürüm 2.x‘i desteklemiyor. Fakat PHP 5‘in çıkmasının ardından bu alanda büyük bir atılım olacak ve PHP-GTK’nın çalışması için gerekli olan bütün teknolojiler birbirlerine entegre olarak aynı anda duyurulacak.

PHP-GTK2 ile ilgili başlangıç düzeyinde bilmemiz gereken terimlere bir göz atalım.

PHP-GTK2 terimleri ile ilgili php.org.tr adresinde UMUT IŞIK tarafından yazılan  çok güzel bir makaleyi sizinle paylaşmak isterim.09 Kasım 2005  tarihli makale.

Bu yazıda giris seviyesinde PHP-GTK terimleri hakkında bilgi edinebilirsiniz. 1) PHP-GTK : TERİMLER
PHP-GTK hakkında birşeyler okurken ya da bir yerde konuşulurken duyma ihtimaliniz olan terimler var. Bunlar aslında aşina olduğunuz şeylerin biraz farklı açıdan görünüşü olmakla birlikte PHP-GTK kodlarken algoritmanın kafanızda canlanması için bilmeniz gereken terimlerdir.
Tanımların daha rahat aklınızda kalması için onlara Türkçe karşılıklar buldum. Parantez içinde orijinal isimlerini görebilirsiniz. Fakat ben elimden geldiğince bulduğum karşılıkları kullanacağım.

En dıştan en içe doğru sırayla değinecek olursak;

A. Parçacıklar (Widgets)
Parçacıklar bir GUI uygulama formuna bağlı tüm nesnelere verilen genel bir addır. Düğmeler, kaydırma çubukları, listeler. Bunlara Parçacık diyeceğiz.

Bir Parçacık doğumundan ölümüne 5 adımda ilerler.

    * Oluşturma ( Yeni bir parçacık doğar. [Nesne tanımlanır] )
    * Yer belirleme ( Oluşturulan parçacık bir kutuya (container) bağlanır )
    * Sinyal bağlantısı (Bu parçacığı sinyal bağlantısı ile bir fonksiyona tetikliyoruz. Artık bu Parçacığın görevi fonksyionda ona yüklenen görevi yapmaktır. )
    * Görüntüleme (Parçacığın ekrana basılması)
    * Yok etme (Programın kapatılması ile oluşturduğumuz parçacığın yok edilmesi)

B. Kutular (Containers)
Kutular aslında birer parçacıktır . Fakat bunlar programımızın sahip olması gereken parçacıklardır. Diğer parçacıkları saklayan ev görevini üstlenmektedir. Her insanın bir evi olduğu gibi her parçacığın da bir kutusu vardır. Örneğin GtkWindow , GtkFrame ve GtkBox en çok kullanılan kutulardır.
Kutuları program arabiriminizin daha güzel görünmesi için, daha çok kullanın. Bu hem kullanıcının programı anlamasını hem de geliştiricinin daha rahat hareket etmesini sağlar. Bir sistem basit olduğu sürece güvenlidir ve bir o kadar da yenilenebilirdir.
Tüm kutular, GtkContainer adlı kutu sınıfı içinden çağırılır. Bu sınıfa bağlanan tüm parçacıklar ise GtkWidget sınıfına bağlıdırlar.

C. Sinyaller (Signals)
Sinyaller parçacıklarımızın fonksiyonlara nasıl kilitleneceğini bildiren ara tetiklerdir. Örneğin bir düğmenin çıkış sinyalini tek tıklama olarak belirtirsek, düğmeyi taşımaya çalıştığımızda fonksiyonumuz çalışmaz.
Tüm parçacıkların bir kutuya sahip olması gerektiğini yukarıda görmüştük. Sinyaller ise parçacıkların olmazsa olmazlarından değildir. Çünkü bu yapcağımız işe göre değişen bir unsurdur. Örneğin uygulamamıza bir çizgi eklemek istiyoruz; GtkHSeparator bu çizgi için bir sinyale ihtiyacımız yoktur.
Çünkü bunu tıklayarak, veya taşıyarak yaptırabileceğimiz bir iş yoktur.

D. Geriçağrılar (Callbacks)
Bir parçacığımız olsun. Örneğin bir kaydırma çubuğu. Bu kaydırma çubuğunun bir sinyal fonksiyona tetiklendiğini biliyoruz. Peki bu tetiklemenin ardından ne olur?
Kaydırma çubuğu hareket ettirildiğinde tetiklenmiş sinyal bizi istediğimiz fonksiyona yönlendirir. Gelen bir sinyali alıp fonksiyona bağlayan bu yönlendirme yapılarını geriçağrılar olarak adlandırıyoruz. Bir geriçağrı connect komutu ile gerçekleştirilir.

2) PHP-GTK : SINIFLAR
GTK’nın burada anlatamayacağımız kadar çok sınıfı mevcut. Fakat burada örnek olması bağlamında her programda kullanacağımız 5 sınıftan bahsetmek istiyorum. Öncesinde tüm sınıfların ve fonksiyonların ayrıntılı bir şekilde anlatıldığı sayfa bağlantısını vereyim;

http://gtk.php.net/manual/en/

GtkWindow : GtkWindow sınıfı ile yeni bir pencere oluşturursunuz. GtkWindow sınıfına bağlı fonksiyonlardan set_name , set_title_connect , connect ve set_border_width bu sınıfın en çok kullanılan fonksiyonlarıdır. Kullanıcı arabirimine sahip olmak isteyen her uygulama pencere sınıfını çağırmalıdır.

Referans: http://gtk.php.net/manual/en/gtk.gtkwindow.php

GtkFrame() : GtkFrame sınıfı kutu (container) özelliği taşıyan bir parçacık (widget) oluşturmak ve o parçacığa özellikler bildirmek için kodlanmış fonksiyonları içerir.

Referans: http://gtk.php.net/manual/en/gtk.gtkframe.php

GtkLabel() : GtkLabel , etiket olarak kullanabileceğimiz bir parçacık oluşturmak ve bu parçacığa özellikleri bildirmek için kodlanmış fonksiyonları içeren sınıftır.
Eğer etikete giriş verilmezse, boş bir etiket oluşturulmuş olur.

Referans: http://gtk.php.net/manual/en/gtk.gtklabel.php

GtkEntry() : GtkEntry , kullanıcının programa veri girmesi için metin kutusu olarak kullanabileceğimiz bir parçacık oluşturmak ve bu parçacığa özellikleri bildirmek için kodlanmış fonksiyonları içeren sınıftır.

Referans: http://gtk.php.net/manual/en/gtk.gtkentry.php

GtkButton() : Programlama arabirimlerimizde en çok kullandığımız parçacıklardan biri düğmelerdir. GtkButton sınıfı ve sınıfa bağlı fonksiyonlar aracılığıyla kullanıcının üzerine tıklayarak sinyal oluşturacağı parçacıklar (Widgets) oluşturabiliriz. Düğme sınıfında düğmenin sinyal alış özelliklerini değiştirebileceğimiz fonksiyonlara da sahibiz.
Bu fonksiyonlar ile düğmeye pressed , released , clicked gibi davranış sinyalleri yükleyebiliriz.

PHP-GTK2 öğrenmeye karar verdik.Peki nasıl kuracağız.

Şimdi sıra geldi bilgisayarınıza Gtk2 desteği nasıl vereceğinize.Gtk2 kütüphaneleri Apache gibi bir Sunucuya ihtiyaç duymaz.Gtk2 kütüphanelerini kullanabilmek için “Gnope” program yönetim  bileşeni bilgisayarımızda kurulu olmalıdır.Gnope bir Freamwork’tür.Gtk2 desteğini bize kazandırır..NET kullanıcıları program geliştirmek için FrameWork 2.0 kurmak zorundadır.Java geliştiricileri JVM(Java virtual Machine) kurmak zorundadır.işte gnope ‘da  bize bir alt yapı hazırlar.Bu  alt yapıda bize  Gtk2 desteği verir.Gnope indirmek için http://www.gnope.org adresine gidin ve kullandığınız işletim sistemi için gereken kurulum dosyalarını indirin.Ben Windows makinem için gereken bileşeni indirdim ve bir kaç next tıklaması yaparak gnope desteğini bilgisayarıma kurdum.İşte şimdi Gtk2 programları yapabiliriz.

Kurulumda hiçbir değişiklik yapmazsak eğer program C:\PHP-GTK2 yoluna kuruluyor.Burada küçük bir ayrıntı var.Bu klasörün içinde de php.ini dosyası var.Bu php.ini dosyasınıda açalım ve satırını “php-gtk.codepage=iso-8859-9”  biçiminde değiştirelim.ve sadece kaydedelim.Bu yeterli.herhangi bir şeyi restart etmemize gerek yok.Böylece kurulum tamamlandı.


Kaynak gtk2.kglz.com/
Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...