PHP 4’ün Yenilikleri

Preview:

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

Citation preview

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

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ı

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.

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.

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

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

III. print_r() (PHP 4 ile)

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)

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ü

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

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

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

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)

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

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

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ı

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)

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

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.

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.

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>

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

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.

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.

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.

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>”;?>

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 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.

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

/usr/local/httpd/htdocstest.htmlhtml

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

V. Dosya ve Dizin Fonksiyonları

Diğer yeni dosya fonksiyonları:

• fscanf()• ftruncate()

VI. Metin (String) Fonksiyonları

a. str_repeat() (PHP 4 ile) b. str_pad() (PHP 4 ile) c. 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.

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

Çıktısı:

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

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.

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 parametredeki metnin içinde ikinci parametredekimetnin kaç defa kullanıldığını döner.

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

Çıktısı: 2

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