PHP & MySQL Kullanarak C'nin LINQ Mantığını Uygulamak

Son güncelleme: 08.08.2011 11:13
  • programlama - c++ - php - LINQ - uygulama

    Bilindiği üzere C# beraberinde LINQ (Language Integrated Query) desteklemektedir. LINQ'in kullanımı o kadar güzel ve basit ki bunu arkadaşım Tufan ile PHP için derledik. Birbiri ardına yenilemeler ve geliştirmeler sonucu öyle bir PHP sınıfı çıktı ki ortaya akıllara zarar :)

    İlk olarak bir PHP topluluğunda yayınlandı. Aldığımız olumlu eleştiriler ve yönlendirmeler bizde iyi birşeyler yaptığımız hissi uyandırdı. Sınıf kodlarını verdikten sonra örnekleme olarak bir çok alternatif sunacağım.

    d3linq.php

    Evet işte sınıfımız bu. Değil yorumlamak, okumaya bir ömür yetmez :) Şimdi örneklemelere geçelim ve PHP ile LINQ 'in uyumunu gözler önüne serelim.


    <?php
    $myArray=array(
    'hayvanlar'=>array('kedi'=>'Miyavv','kopek'=>'Hav hav','yilan'=>'sSSSssSssss','kus'=>'Cik Cik Cik'),
    'buyuk bir hayvan'=>'dinosaur',
    'bu 100den kucuktur'=>90
    );

    include 'D3Linq.php'; // Sınıfımızı çağırdır..
    $a=new D3Linq();

    ?>

    Bu şekilde bir dizi değişkenimiz olsun. Buraya kadar zaten herşey PHP olan dizilerle alakalı. Zaten LINQ mantığında alaka kurduğumuz şey bu.

    Bütün hayvanları bir obje olarak çıkardıkları sesleriyle çekebileceğimiz örnek sorgumuz:


    $a->Query('SELECT key Animal Name,value As Sound FROM myArray.animals ORDER BY Sound DESC');

    Cik Cik sesi çıkaran hayvanı sorguyla çekelim:


    $a->Query("SELECT key Animal Name,value As Sound FROM myArray.animals WHERE value LIKE '%cik cik%' ");

    Integer Değeri bulmak için örnek bir sorgu:


    $a->Query("SELECT key ElementName,value Value FROM myArray WHERE is_integer('.value.') ");

    Hem Integer hemde 100 den küçük olanı bulmak için gereken sorgumuz:


    $a->Query("SELECT key ElementName,value Value FROM myArray WHERE value<100 AND is_integer('.value.') ");

    Eğer değer (value) bir dizi değişken ise:


    $a->Query("SELECT key ElementName,value Value FROM myArray WHERE '.value.'[kedi]=='Miyavv' AND '.value.'[kopek]=='Hav hav' ORDER BY ElementName ASC");

    Silme işlemi yapalım.. Sesi cik cik e benzeyen değeri silelim:


    $a->Query("DELETE FROM myArray.animals WHERE value LIKE '%cik cik%' ");

    Evet arkadaşlar gördüğünüz gibi LINQ mantığını MySQL gibi sorgularla çok basit olarak dizi değişkenlere atadığımız değerlerle birlikte kullandık. Bu örnekler çoğaltılabilir, UPDATE , INSERT gibi değerleri de aynı MySQL de olduğu gibi kullanabilirsiniz. Dikkat etmeniz gereken PHP de ki yazım biçimi..

    Şimdi bu sınıfla ilgili çok önemli bir konuya değinmek istiyorum. Örnekleme yaparak..

    SELECT mantığını sadece değer atadığımız dizi değişkenlerde değil bir json_file,xml,html dosyalarına da uygulayabilirsiniz. Burdaki mantık şudur: etiketler dizi değişkenlerdir.


    1 SELECT * FROM json_file(json_dosyasi.txt)
    2 SELECT * FROM xml_file(https://www.main-board.com/feed/).channel.item WHERE title LIKE '%linq%'
    3 SELECT *FROM html_file(https://main-board.com).div WHERE class='post_title'
    4 SELECT *FROM text_file(data.txt) WHERE in_array('.line.',array(1,2,3,4,5,6,))
    5 SELECT * FROM dir_files(doc).files WHERE name LIKE '%D3Linq%'

    Bu örnekleri açıklayalım:

    1- En basit anlamda bir json dosyası çekmek için kullanılabilir 2- Bir dosyadan yada direk bir internet sitesini besleyen XML dosyasını parse edilmiş dizi değişken değerleriyle kullanabilirsiniz. 3- Yine bir html dosya yada bir internet sitesindeki html dosyasının içeriğini filtreleyerek (örnekte div alınmıs) div değerlerini dizi değişken gibi kullanıp istediğiniz sorguyu çekebilirsiniz. 4- Örnek bir .txt dosyasının dilediğiniz satırlarını çekebilirsiniz. Line burda dizi değişken değeri olarak kullanılmıştır. 5- Dosya aramalarında örneğin formata dayalı sonuclar elde etmek için bu sorguyu kullanabilirsiniz.

    Gördüğünüz gibi sınıf oldukça başarılı tabi buna siz de kanaat getirmelisiniz. Gerçekten mütevazi olamayacağım bir çalışma kullanıcılarının beğenilerine sunuyorum. Umarım faydalı olur. Sorularınız olursa memnuniyetle yanıtlamaya hazırım. Kolay gelsin!
#08.08.2011 11:13 0 0 0