420 likes | 560 Views
PHP 4’ün Yenilikleri. VIII. “Türkiye’de İnternet” Konferansı. İstanbul, 19-21 Aralık 2002. Hidayet Doğan <hdogan@hido.net>. PHP 4’ün Yenilikleri. empty(“0”) Metin İçine Değişken Yapıştırma print_r() Dizi Fonskiyonları Dosya ve Dizin Fonksiyonları Metin (String) Fonksiyonları.
E N D
PHP 4’ün Yenilikleri VIII. “Türkiye’de İnternet” Konferansı İstanbul, 19-21 Aralık 2002 Hidayet Doğan <hdogan@hido.net>
PHP 4’ün Yenilikleri • empty(“0”) • Metin İçine Değişken Yapıştırma • print_r() • Dizi Fonskiyonları • Dosya ve Dizin Fonksiyonları • Metin (String) Fonksiyonları
I. empty(“0”) Verilen parametredeki değerin boş olup olmadığını döndürür. Boş ise TRUE, değilse FALSE değeri döner. <? $veri = “0”; if (empty($veri)) echo “boş”; else echo “dolu”; ?> PHP 4 Çıktısı: boş PHP 3 Çıktısı: dolu
II. Metin İçine Değişken Yapıştırma PHP 3: “metin metin” . $dizi[0][“isim”] . “metin metin” PHP 4: “metin metin {$dizi[0][“isim”]} metin metin” • Diziler (Tek veya çok boyutlu) • Sınıflar UYARI: PHP 3’e göre hazırlanmış betiklerin PHP 4 üzerinde düzgün bir biçimde çalışması için betik içindeki {$ içeren yerleri \{$ olarak düzeltin.
III. print_r() (PHP 4 ile) Parametrede verilen değişkene ait bilgileri okunabilir bir şekilde gösterir. Eğer girilen değişken metin veya sayı gibi basit bir değişken ise değerin kendisi gösterilir. Dizi, sınıf gibi karmaşık bir değişken ise içinde barındırdıkları verilerle birlikte formatlanmış şekilde gösterir. Genelde betikler içinde, yazılan kodların doğruluğunun kontrol etmesi amacıyla kullanılır (DEBUG).
III. print_r() (PHP 4 ile) <? $dizi = array(“bir” => “PHP”, “iki” => “HTML”); $metin = “Türkiye PHP Grubu”; $sayi = 15234; echo “<pre>”; print_r($dizi); print_r($metin); print_r($sayı); echo “</pre>”; ?>
III. print_r() (PHP 4 ile) Çıktısı: Array ( [bir] => PHP [iki] => HTML ) Türkiye PHP Grubu 15234
IV. Dizi Fonksiyonları • in_array() (PHP 4 ile) • array_search() (PHP 4.0.5 ile) • array_key_exists() / key_exists() (PHP 4.0.6 ile) • explode() 3. Parametresi (PHP 4.0.1 ile)
IV-a. in_array() (PHP 4 ile) Eskiden... • for döngüsü • while döngüsü <? $dizi = array(“PHP”, “HTML”, “XML”); for ($i = 0; $i < count($dizi); $i++) { if (“PHP” == $dizi[$i])) echo “var”; else echo “yok”; } ?>
IV-a. in_array() (PHP 4 ile) Birinci parametredeki değeri ikinci parametredeki dizi elemanları değerleri içinde arar. Eğer aranan değer bulunursa TRUE, bulunamaz ise FALSE değeri döner. <? $dizi = array(“PHP”, “HTML”, “XML”); if (in_array(“PHP”, $dizi)) echo “var”; else echo “yok”; ?> Çıktısı: var
IV-a. in_array() (PHP 4 ile) Eğer üçüncü parametre değeri TRUE olarak verilirse, arama sadece birinci parametredeki değerin veri tipi ile eşit olan elemanlar arasında yapılır. <? $dizi = array(“metin”, 27, 12, 65); if (in_array(“27”, $dizi, TRUE)) echo “27 (metin) bulundu”; if (in_array(65, $dizi, TRUE)) echo “65 (sayı) bulundu”; ?> Çıktısı: 65 (sayı) bulundu
IV-b. array_search() (PHP 4.0.5 ile) in_array() fonksiyonu ile neredeyse aynı olup, eğer verilen değer bulunursa TRUE değeri yerine, bulduğu değere ait anahtarı (eleman ismini) döndürür. <? $dizi = array(“bir” => “PHP”, “iki” => “HTML”); echo array_search(“PHP”, $dizi); ?> Çıktısı: bir
IV-c. array_key_exists() (PHP 4.0.6 ile) Eskiden... <? $dizi = array(“bir” => “PHP”, “iki” => “HTML”); while (list($anahtar, $değer) = each($dizi)) { if (“bir” == $anahtar) echo “var”; else echo “yok”; } ?>
IV-c. array_key_exists() (PHP 4.0.6 ile) Birinci parametredeki değeri ikinci parametredeki dizi anahtarları (eleman isimleri) içinde arar. Eğer aranan değer bulunursa TRUE, bulunamaz ise FALSE değeri döner. <? $dizi = array(“bir” => “PHP”, “iki” => “HTML”); if (array_key_exists(“bir”, $dizi)) echo “var”; else echo “yok”; ?> Çıktısı: var
IV-c. array_key_exists() (PHP 4.0.6 ile) UYARI: Bu fonksiyonun ismi PHP 4.0.6 sürümünde key_exists() olarak geçmektedir.
IV-d. explode() 3. Parametresi (PHP 4.0.1 ile) İkinci parametredeki metni birinci parametrede verilen ayraç ile parçalayıp dizi halinde döndürür. Eğer ayraç boş ise FALSE değeri döner. Eğer ayraç metin içinde bulunmazsa tüm metin tek elemanlı bir dizi olarak döner. Çıktısı: <? $metin = “bir iki üç dört beş”; $dizi = explode(“ “, $metin); echo $dizi[0].”<br>”; echo $dizi[1]; ?> bir iki
IV-d. explode() 3. Parametresi (PHP 4.0.1 ile) Üçüncü parametre olan limit parametresine bir sayı verildiğinde, ikinci parametrede verilen metni sadece o sayı kadar parçalar. <? $metin = “bir iki üç dört beş”; $dizi = explode(“ “, $metin, 2); echo $dizi[0].”<br>”; echo $dizi[1].; ?> Çıktısı: bir İki üç dört beş
IV. Dizi Fonksiyonları • Dizi fonksiyonlarının neredeyse yarısı PHP 4 ile gelmiştir. • Geriye kalan fonksiyonların ise yine yarısı üzerinde yenilikler • yapılmıştır. Yeni dizi fonksiyonlarından birkaç tanesi: • array_count_values() • array_merge() • array_rand() • array_slice() • array_unique()
V. Dosya ve Dizin Fonksiyonları • getcwd() (PHP 4 ile) • disk_free_space() (PHP 4.1.0 ile) • disk_total_space() (PHP 4.1.0 ile) • move_uploaded_file() (PHP 4.0.3 ile) • parse_ini_file() (PHP 4 ile) • pathinfo() (PHP 4.0.3 ile) • realpath() (PHP 4 ile)
V-a. getcwd() (PHP 4 ile) O an çalışılan dizinin tam yolunu metin olarak döner. <? echogetcwd(); ?> Çıktısı: /usr/local/httpd/htdocs C:\Program Files\Apache Group\Apache\htdocs
V-b. disk_free_space() (PHP 4.1.0 ile) Parametrede verilen dizine ait bölümdeki boş alanı bayt cinsinden döner. Eğer yanış bir dizin verilirse boş döner. Çıktısı: <? echodisk_free_space(“.”); ?> 145323081 diskfreespace() fonksiyonu bu fonksiyonun kısa yoludur. UYARI: Windows işletim sistemi üzerinde her zaman boş dönmektedir.
V-c. disk_total_space() (PHP 4.1.0 ile) Parametrede verilen dizine ait bölümdeki alanın büyüklüğünü bayt cinsinden döner. Eğer yanış bir dizin verilirse boş döner. Çıktısı: <? echodisk_total_space(“.”); ?> 4072980480 UYARI: Windows işletim sistemi üzerinde her zaman boş dönmektedir.
V-d. move_uploaded_file() (PHP 4.0.3 ile) PHP ile sunucuya yüklediğiniz dosyaları başka bir dizine ve başka bir isimle taşımanızı sağlar. Birinci parametresine yüklenen dosya adı, ikinci parametresine ise taşınacak dizin ve yeni dosya adı verilir. <!-- yukle.html --> <form method=“post” action=“yukle.php” enctype=“multipart/form-data”> Dosya: <input type=“file” name=“dosya”> <input type=“submit” value=“Gönder”> </form>
V-d. move_uploaded_file() (PHP 4.0.3 ile) <? # yukle.php echo “Önceki Dosya: $dosya<br>”; if (move_uploaded_file($dosya, getcwd().”/dosya.txt”)) echo “Yüklendi”; else echo “Hata!”; ?> Çıktısı: Önceki Dosya: /tmp/phpxujllN Yüklendi
V-d. move_uploaded_file() (PHP 4.0.3 ile) Eğer $dosya değişkeninde verilen dosya PHP kullanarak yüklediğimiz bir dosya olmasaydı (sistem üzerindeki herhangi bir dosya olabilir) fonksiyon FALSE değerini dönerdi ve çıktı Yüklendi yerine Hata!olurdu. Dosyamız PHP ile yüklenmiş doğru bir dosya ve sistemde oluşan herhangi bir hata yüzünden taşınamıyor olsaydı yine FALSE değerini döner ve PHP ek olarak bir hata verirdi. UYARI: Taşınacak yerde aynı isimde bir dosya varsa yeni dosyayı üstüne yazar.
V-e. parse_ini_file() (PHP 4 ile) Birinci parametrede verilen ayar (ini) dosyasını yorumlar ve dizi olarak döndürür. Eğer verilen dosya bulunamıyor veya açılamıyor ise betik hata verir ve çalışma sonlanır. İkinci parametrede ise dosya içindeki bölümleri yorumlayıp yorumlamıyacağı belirtilir. TRUE değeri verilirse bölümleri Yorumlayıp verileri çok boyutlu bir dizi olarak döner. FALSE verilirse – ikinci parametre verilmediğinde FALSE olarak atanmaktadır – veriler tek boyutlu bir dizi olarak döner.
V-e. parse_ini_file() (PHP 4 ile) UYARI: Eğer veri içinde alfanumerik karakterler dışında bir karakter kullanılacaksa mutlaka çift tırnak (“) arasına alınmalıdır. ; Örnek ayar dosyası (ornek.ini) [ilk_bolum] bir = 1 bes = 5 [ikinci_bolum] yol = /usr/local/httpd/htdocs url = “http://localhost/~test”
V-e. parse_ini_file() (PHP 4 ile) <? # yorumla.php echo “<pre>”; $dizi = parse_ini_file(“ornek.ini”); print_r($dizi); $dizi = parse_ini_file(“ornek.ini”, TRUE); print_r($dizi); echo “</pre>”; ?>
V-e. parse_ini_file() (PHP 4 ile) 1. Çıktısı: Array ( [bir] => 1 [bes] => 5 [yol] = /usr/local/httpd/htdocs [url] = http://localhost/~test )
V-e. parse_ini_file() (PHP 4 ile) 2. Çıktısı: Array ( [ilk_bolum] => Array ( [bir] => 1 [bes] => 5 ) [ikinci_bolum] => Array ( [yol] = /usr/local/httpd/htdocs [url] = http://localhost/~test ) )
V-f. pathinfo() (PHP 4.0.3 ile) Parametrede verilen yola (path) ait dizin adı, dosya ismi ve dosya uzantısı bilgilerini dizi olarak döner. <? $bilgi = pathinfo(“/usr/local/httpd/htdocs/test.html”); echo$bilgi[“dirname”].”<br>”; echo $bilgi[“basename”].”<br>”; echo $bilgi[“extension”]; ?> UYARI:Verilen yolun doğruluğunu kontrol etmez.
V-f. pathinfo() (PHP 4.0.3 ile) Çıktısı: /usr/local/httpd/htdocs test.html html
V-g. realpath() (PHP 4 ile) Parametrede verilen dizin veya dosyanın ya da her ikisinin gerçek ve düzenlenmiş halini döner. Verilen dosya veya dizin açılamaz veya bulunamazsa FALSE değerini döndürür. <? echogetcwd().”<br>”; echorealpath(“../..//../test.html”); ?> Çıktısı: /usr/local/httpd/htdocs/bir/iki/uc /usr/local/httpd/htdocs/test.html
V. Dosya ve Dizin Fonksiyonları Diğer yeni dosya fonksiyonları: • fscanf() • ftruncate()
VI. Metin (String) Fonksiyonları • str_repeat() (PHP 4 ile) • str_pad() (PHP 4 ile) • substr_count() (PHP 4 ile)
VI-a. str_repeat() (PHP 4 ile) Birinci parametredeki metni, ikinci parametrede verilen sayı kadar çoğaltır ve döner. Eğer ikinci parametrede 0 ise boş metin döner. 0’dan küçük ise hata oluşur ve çalışma sonlanır. Çıktısı: <? echostr_pad(“-=”, 10); ?> -=-=-=-=-=-=-=-=-=-=
VI-b. str_pad() (PHP 4 ile) • Birinci parametredeki metnin soluna, sağına veya her iki • tarafına, istenilen boyuta ulaşana kadar üçüncü parametredeki • metni ekler. Eğer üçüncü parametre verilmez ise yerine boşluk • karakteri atanır. Dördüncü parametrede hangi yöne eklenmesi • gerektiği belirtilir. Bu parametreye: • STR_PAD_LEFT (sadece sola ekle) • STR_PAD_RIGHT (sadece sağa ekle) • STR_PAD_BOTH (her iki yöne ekle) • değerlerini verebiliriz. Eğer bu parametre verilmez ise yerine • STR_PAD_RIGHT değeri atanır.
VI-b. str_pad() (PHP 4 ile) <? echo“\””.str_pad(“PHP”, 10).“\”<br>”; echo“\””.str_pad(“PHP”, 10, “-=”, STR_PAD_LEFT).“\”<br>”; echo“\””.str_pad(“PHP”, 10, “_”, STR_PAD_BOTH). “\”; ?> UYARI: İkinci parametre negatif bir sayı veya verilen metnin uzunluğundan küçük bir sayı ise hiçbir değişiklik olmadan birinci parametredeki metin döner.
VI-b. str_pad() (PHP 4 ile) Çıktısı: "PHP " "-=-=-=-PHP" "___PHP____"
VI-c. substr_count() (PHP 4 ile) Birinci parametredekimetnin içinde ikinci parametredeki metnin kaç defa kullanıldığını döner. Çıktısı: 2 <? echosubstr_count(“Bu bir örnek”, “r”); ?>
VI. Metin (String) Fonksiyonları Yeni metin fonksiyonlarından birkaç tanesi: • sscanf() • wordwrap()
Unutulmaması Gereken... • PHP 4.1.0 sürümü ile birlikte: • $HTTP_POST_VARS = $_POST • $HTTP_GET_VARS = $_GET • $HTTP_COOKIE_VARS = $_COOKIE • $HTTP_SESSION_VARS = $_SESSION • $HTTP_SERVER_VARS = $_SERVER • $HTTP_ENV_VARS = $_ENV • $HTTP_POST_FILES = $_FILES • PHP 4.2.0 kurulumunda register_globals = off