php 4’ün yenilikleri

42
PHP 4’ün Yenilikleri VIII. “Türkiye’de İnternet” Konferansı İstanbul, 19-21 Aralık 2002 Hidayet Doğan <[email protected]>

Upload: tao

Post on 27-Jan-2016

51 views

Category:

Documents


0 download

DESCRIPTION

PHP 4’ün Yenilikleri. VIII. “Türkiye’de İnternet” Konferansı. İstanbul, 19-21 Aralık 2002. Hidayet Doğan . 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ı. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP 4’ün Yenilikleri

PHP 4’ün Yenilikleri

VIII. “Türkiye’de İnternet” Konferansı

İstanbul, 19-21 Aralık 2002

Hidayet Doğan <[email protected]>

Page 2: PHP 4’ün Yenilikleri

PHP 4’ün Yenilikleri

I. empty(“0”)

II. Metin İçine Değişken Yapıştırma

III. print_r()

IV. Dizi Fonskiyonları

V. Dosya ve Dizin Fonksiyonları

VI. Metin (String) Fonksiyonları

Page 3: PHP 4’ün Yenilikleri

I. empty(“0”)

<?$veri = “0”;

if (empty($veri)) echo “boş”;else echo “dolu”;?>

PHP 4 Çıktısı: boş

PHP 3 Çıktısı: dolu

Verilen parametredeki değerin boş olup olmadığını döndürür.Boş ise TRUE, değilse FALSE değeri döner.

Page 4: PHP 4’ün Yenilikleri

II. Metin İçine Değişken Yapıştırma

• Diziler (Tek veya çok boyutlu)• Sınıflar

PHP 3: “metin metin” . $dizi[0][“isim”] . “metin metin”

PHP 4: “metin metin {$dizi[0][“isim”]} metin metin”

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.

Page 5: PHP 4’ün Yenilikleri

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ı gibibasit bir değişken ise değerin kendisi gösterilir. Dizi, sınıfgibi karmaşık bir değişken ise içinde barındırdıkları verilerlebirlikte formatlanmış şekilde gösterir.

Genelde betikler içinde, yazılan kodların doğruluğunun kontroletmesi amacıyla kullanılır (DEBUG).

Page 6: PHP 4’ün Yenilikleri

<?$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)

Page 7: PHP 4’ün Yenilikleri

Çıktısı:

Array(

[bir] => PHP[iki] => HTML

)

Türkiye PHP Grubu

15234

III. print_r() (PHP 4 ile)

Page 8: PHP 4’ün Yenilikleri

IV. Dizi Fonksiyonları

a. in_array() (PHP 4 ile) b. array_search() (PHP 4.0.5 ile) c. array_key_exists() / key_exists() (PHP 4.0.6 ile) d. explode() 3. Parametresi (PHP 4.0.1 ile)

Page 9: PHP 4’ün Yenilikleri

IV-a. in_array() (PHP 4 ile)Eskiden...

<?$dizi = array(“PHP”, “HTML”, “XML”);

for ($i = 0; $i < count($dizi); $i++) { if (“PHP” == $dizi[$i])) echo “var”; else echo “yok”;}?>

• for döngüsü• while döngüsü

Page 10: PHP 4’ün Yenilikleri

IV-a. in_array() (PHP 4 ile)

<?$dizi = array(“PHP”, “HTML”, “XML”);

if (in_array(“PHP”, $dizi)) echo “var”;else echo “yok”;?>

Birinci parametredeki değeri ikinci parametredeki dizielemanları değerleri içinde arar. Eğer aranan değer bulunursaTRUE, bulunamaz ise FALSE değeri döner.

Çıktısı: var

Page 11: PHP 4’ün Yenilikleri

IV-a. in_array() (PHP 4 ile)

Eğer üçüncü parametre değeri TRUE olarak verilirse, aramasadece birinci parametredeki değerin veri tipi ile eşit olanelemanlar 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

Page 12: PHP 4’ün Yenilikleri

IV-b. array_search() (PHP 4.0.5 ile)

in_array() fonksiyonu ile neredeyse aynı olup, eğer verilendeğ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

Page 13: PHP 4’ün Yenilikleri

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)

Page 14: PHP 4’ün Yenilikleri

IV-c. array_key_exists() (PHP 4.0.6 ile)

Birinci parametredeki değeri ikinci parametredeki dizianahtarları (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

Page 15: PHP 4’ün Yenilikleri

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.

Page 16: PHP 4’ün Yenilikleri

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 FALSEdeğeri döner. Eğer ayraç metin içinde bulunmazsa tüm metintek elemanlı bir dizi olarak döner.

<?$metin = “bir iki üç dört beş”;$dizi = explode(“ “, $metin);echo $dizi[0].”<br>”;echo $dizi[1];?>

Çıktısı: bir

iki

Page 17: PHP 4’ün Yenilikleri

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ş

Page 18: PHP 4’ün Yenilikleri

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()

Page 19: PHP 4’ün Yenilikleri

V. Dosya ve Dizin Fonksiyonları

a. getcwd() (PHP 4 ile) b. disk_free_space() (PHP 4.1.0 ile) c. disk_total_space() (PHP 4.1.0 ile) d. move_uploaded_file() (PHP 4.0.3 ile) e. parse_ini_file() (PHP 4 ile) f. pathinfo() (PHP 4.0.3 ile) g. realpath() (PHP 4 ile)

Page 20: PHP 4’ün Yenilikleri

V-a. getcwd() (PHP 4 ile)

O an çalışılan dizinin tam yolunu metin olarak döner.

<?echo getcwd();?>

Çıktısı:

/usr/local/httpd/htdocs

C:\Program Files\Apache Group\Apache\htdocs

Page 21: PHP 4’ün Yenilikleri

V-b. disk_free_space() (PHP 4.1.0 ile)

Parametrede verilen dizine ait bölümdeki boş alanı baytcinsinden döner. Eğer yanış bir dizin verilirse boş döner.

<?echo disk_free_space(“.”);?>

Çıktısı:

145323081

UYARI: Windows işletim sistemi üzerinde her zaman boş dönmektedir.

diskfreespace() fonksiyonu bu fonksiyonun kısa yoludur.

Page 22: PHP 4’ün Yenilikleri

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.

<?echo disk_total_space(“.”);?>

Çıktısı:

4072980480

UYARI: Windows işletim sistemi üzerinde her zaman boş dönmektedir.

Page 23: PHP 4’ün Yenilikleri

V-d. move_uploaded_file() (PHP 4.0.3 ile)

PHP ile sunucuya yüklediğiniz dosyaları başka bir dizine vebaş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>

Page 24: PHP 4’ün Yenilikleri

V-d. move_uploaded_file() (PHP 4.0.3 ile)

<?# yukle.phpecho “Ö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

Page 25: PHP 4’ün Yenilikleri

V-d. move_uploaded_file() (PHP 4.0.3 ile)

Eğer $dosya değişkeninde verilen dosya PHP kullanarakyüklediğimiz bir dosya olmasaydı (sistem üzerindeki herhangibir 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ı yineFALSE 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.

Page 26: PHP 4’ün Yenilikleri

V-e. parse_ini_file() (PHP 4 ile)

Birinci parametrede verilen ayar (ini) dosyasını yorumlarve dizi olarak döndürür. Eğer verilen dosya bulunamıyorveya açılamıyor ise betik hata verir ve çalışma sonlanır.

İkinci parametrede ise dosya içindeki bölümleri yorumlayıpyorumlamıyacağı belirtilir. TRUE değeri verilirse bölümleriYorumlayı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.

Page 27: PHP 4’ün Yenilikleri

V-e. parse_ini_file() (PHP 4 ile)

; Örnek ayar dosyası (ornek.ini)

[ilk_bolum]bir = 1bes = 5

[ikinci_bolum]yol = /usr/local/httpd/htdocsurl = “http://localhost/~test”

UYARI:Eğer veri içinde alfanumerik karakterler dışında bir karakter kullanılacaksa mutlaka çift tırnak (“) arasına alınmalıdır.

Page 28: PHP 4’ün Yenilikleri

V-e. parse_ini_file() (PHP 4 ile)

<?# yorumla.phpecho “<pre>”;$dizi = parse_ini_file(“ornek.ini”);print_r($dizi);

$dizi = parse_ini_file(“ornek.ini”, TRUE);print_r($dizi);echo “</pre>”;?>

Page 29: PHP 4’ün Yenilikleri

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

)

Page 30: PHP 4’ün Yenilikleri

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)

)

Page 31: PHP 4’ün Yenilikleri

V-f. pathinfo() (PHP 4.0.3 ile)

Parametrede verilen yola (path) ait dizin adı, dosya ismi vedosya 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.

Page 32: PHP 4’ün Yenilikleri

V-f. pathinfo() (PHP 4.0.3 ile)Çıktısı:

/usr/local/httpd/htdocstest.htmlhtml

Page 33: PHP 4’ün Yenilikleri

V-g. realpath() (PHP 4 ile)

Parametrede verilen dizin veya dosyanın ya da her ikisiningerçek ve düzenlenmiş halini döner. Verilen dosya veya dizin açılamaz veya bulunamazsa FALSE değerini döndürür.

<?echo getcwd().”<br>”;echo realpath(“../..//../test.html”);?>

Çıktısı: /usr/local/httpd/htdocs/bir/iki/uc

/usr/local/httpd/htdocs/test.html

Page 34: PHP 4’ün Yenilikleri

V. Dosya ve Dizin Fonksiyonları

Diğer yeni dosya fonksiyonları:

• fscanf()• ftruncate()

Page 35: PHP 4’ün Yenilikleri

VI. Metin (String) Fonksiyonları

a. str_repeat() (PHP 4 ile) b. str_pad() (PHP 4 ile) c. substr_count() (PHP 4 ile)

Page 36: PHP 4’ün Yenilikleri

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.

<?echo str_pad(“-=”, 10);?>

Çıktısı:

-=-=-=-=-=-=-=-=-=-=

Page 37: PHP 4’ün Yenilikleri

VI-b. str_pad() (PHP 4 ile)

Birinci parametredeki metnin soluna, sağına veya her iki tarafına, istenilen boyuta ulaşana kadar üçüncü parametredekimetni ekler. Eğer üçüncü parametre verilmez ise yerine boşlukkarakteri atanır. Dördüncü parametrede hangi yöne eklenmesigerektiğ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 yerineSTR_PAD_RIGHT değeri atanır.

Page 38: PHP 4’ün Yenilikleri

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.

Page 39: PHP 4’ün Yenilikleri

VI-b. str_pad() (PHP 4 ile)Çıktısı:

"PHP ""-=-=-=-PHP""___PHP____"

Page 40: PHP 4’ün Yenilikleri

VI-c. substr_count() (PHP 4 ile)

Birinci parametredeki metnin içinde ikinci parametredekimetnin kaç defa kullanıldığını döner.

<?echo substr_count(“Bu bir örnek”, “r”);?>

Çıktısı: 2

Page 41: PHP 4’ün Yenilikleri

VI. Metin (String) Fonksiyonları

Yeni metin fonksiyonlarından birkaç tanesi:

• sscanf()• wordwrap()

Page 42: PHP 4’ün Yenilikleri

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