26
12.10.2015 1 İnternet Tabanlı Programlama PHP Temelleri Yrd.Doç.Dr. Celal Murat KANDEMİR ESOGÜ –Eğitim Fakültesi -BÖTE twitter.com/cmkandemir Gerekli Yazılımlar ApacheWeb Sunucusu (http://www.apache.org) MySQL(Veritabanı) (http:// www.mysql.com) PhpmyAdmin(http://www.phpmyadmin.net/) Açık kaynak kod Windows ve Linux Kurulumun bilgileri ilgili sitelerde mevcuttur. Toplu olarak kurulan paketler de mevcuttur Xamp: http://ogrenmeyonetimsistemleri.blogspot.com.tr/2014/03/xampp- gelistirme-ortamnn-kurulumu.html WampServer

PHP Temelleri

Embed Size (px)

Citation preview

Page 1: PHP Temelleri

12.10.2015

1

İnternet Tabanlı Programlama

PHP Temelleri

Yrd.Doç.Dr. Celal Murat KANDEMİRESOGÜ – Eğitim Fakültesi - BÖTEtwitter.com/cmkandemir

Gerekli Yazılımlar

� Apache Web Sunucusu (http://www.apache.org)

� MySQL (Veritabanı) (http:// www.mysql.com)

� PhpmyAdmin (http://www.phpmyadmin.net/)

� Açık kaynak kod

� Windows ve Linux

� Kurulumun bilgileri ilgili sitelerde mevcuttur.

� Toplu olarak kurulan paketler de mevcuttur• Xamp:

http://ogrenmeyonetimsistemleri.blogspot.com.tr/2014/03/xampp-

gelistirme-ortamnn-kurulumu.html

• WampServer

Page 2: PHP Temelleri

12.10.2015

2

Gerekli Yazılımlar

� Programlama IDE / Metin Editörü

� NotePad++

� http://notepad-plus-plus.org/download/v6.6.9.html

� Visual Studio Code

� https://code.visualstudio.com/

� Sublimetext

� http://www.sublimetext.com/2

� Aptana Studio 3

� http://www.aptana.com/products/studio3/download

PHP Temelleri

Yrd.Doç.Dr. Celal Murat KANDEMİRESOGÜ – Eğitim Fakültesi - BÖTEtwitter.com/cmkandemir

Page 3: PHP Temelleri

12.10.2015

3

İçerik

1. PHP, ve Web Sunucu nedir?

2. Web uygulamaları

3. Söz dizimi (Syntax)

4. Değişkenler, değişken tipleri

5. Temel fonksiyonlar

6. Bazı ön tanımlı değişkenler

7. Strings escaping

8. PHP – avantajlar ve dezavantajlar

PHP, ve Web Sunucu

Nedir?

Page 4: PHP Temelleri

12.10.2015

4

PHP Nedir?

� "PHP Hypertext Preprocessor"

� Betik (Scripting) dili

� Dinamik içerik üretimi – örneğin HTML ve JSON

� Veri tabanı etkileşimi (CRUDs)

� Sunucu tarafında veya komut satırından çalıştırma

� HTML içine gömülebilir.

� İlk kez 1995’te Apache için modül amaçlı tanıtıldı

� Açık kaynak, C dilinde yazıldı

� Perl ve C benzeri

HTML Nasıl Çalışır1. URL girilir

2. IP bulunur

3. Ana sayfa isteği

4. İstek alınır

5. Sayfa getirilir

6. Sayfa gönderilir

7. Sayfa görüntülenir

8

Page 5: PHP Temelleri

12.10.2015

5

PHP Nasıl Çalışır1. URL girilir

2. IP bulunur

3. Ana sayfa isteği

4. İstek alınır

5. Sayfa getirilir

6. PHP içeriyor mu?

7. PHP işlenir

8. SQL işlenir (varsa)

9. Veri alınır

10. Sayfa gönderilir

11. Sayfa görüntülenir

9

Web sunucu nedir?

� HTTP istekleri ve geri döndürülecek cevapların işlenmesinden sorumlu bilgisayar programıdır.

� HTTP istekleri (request) alır

� İstenen kaynakları bulur veya bir program çalıştırır

� Bulunan kaynakları çıktı olarak tarayıcıya gönderir

� En bilinen web sunucular Apache, IIS, NodeJS, nginx, ligHttpd ve diğerleri

� "LAMP" – Linux, Apache, MySQL, PHP/Perl – bir web sunucu üzerinde en çok kullanılan yazılımlardır

Page 6: PHP Temelleri

12.10.2015

6

Web uygulamaları

Web uygulamaları

� Web üzerinden erişilebilen uygulamalara verilen isimdir

� Web sunucular üzerinde çalışır

� Genellikle PHP, Perl, Java, ASP gibi sunucu tarafında çalışan diller ile geliştirilirler

� Dinamik olarak üretilmiş içeriklere sahiptirler

� Çoğunlukla üç katmanlı mimaridedirler (three-tier) - web server, uygulama ve veritabanı

� Sadece web sayfalarından oluşmazlar

Page 7: PHP Temelleri

12.10.2015

7

Web uygulamaları- Örnekler

� Gmail

� SkyDrive / Live.com

� Google Office / Windows Office

� Prezi

� Creately

� Slideshare

� Web tarayıcıları üzerinden erişilerek kullanılan neredeyse herşey ☺

13

Merhaba PHP

� PHP kodları genellikle ".php" uzantısına sahip dosyalarda bulunurlar.

� Yapılandırılabilirler

� PHP kodları HTML belge içine yerleştirilebilirler

<html><head><title>Merhaba dünya sayfası</title></head><body>Merhaba HTML!</body></html>

Page 8: PHP Temelleri

12.10.2015

8

<html><head><title>Merhaba dünya sayfası</title></head><body><?php print ("Merhaba PHP!"); ?></body></html>

Merhaba PHP

� PHP kodları genellikle ".php" uzantısına sahip dosyalarda bulunurlar.

� Yapılandırılabilirler

� PHP kodları HTML belge içine yerleştirilebilirler

<html><head><title>Merhaba dünya sayfası</title></head><body><?php print ("Merhaba PHP!"); ?></body></html>

Merhaba PHP

� PHP kodları genellikle ".php" uzantısına sahip dosyalarda bulunurlar.

� Yapılandırılabilirler

� PHP kodları HTML belge içine yerleştirilebilirler

<?php PHP kod başlangıcı ?> PHP kod sonu

Page 9: PHP Temelleri

12.10.2015

9

Merhaba PHP – Dosyayı nereye koyacağız?

� webroot klasörü

� XAMMP – htdocs/

� WAMP – www/

� Webroot klasörü yapılandırılabilir

� http://localhost/tam/klasör/yolu/dosyaAdi.php

� Adresi üzerinden erişilebilir

17

Söz Dizimi - Syntax

Page 10: PHP Temelleri

12.10.2015

10

PHP Söz Dizimi� PHP kodları <?php ile başlar ve ?> ile biter

� Sunucu yapılandırmasına bağlı olarak <? İle de

başlayabilir (Kısa stil) – ama bu kötü bir uygulamadır!

� XML açısından <?php - ?> bölümü " işlem yönergesi"

(processing instruction) olarak adlandırılır

� PHP, Perl söz dizimini takip eder

� Basitleştirilmiş

� Yapısal (Artık aynı zamanda OOP)

� C ve Java benzeri

PHP Söz Dizimi

� PHP Betik bir veya daha fazla ifadeden oluşur

� İfadeler PHP Preprocessor tarafından tek tek ele alınır

� Herbir ifade noktalı virgül ";" ile sonlanır

� İlk betiğimiz tek ifadeden oluşmaktadır:

� print fonksiyonunun çağrılması

<?phpprint («Merhaba PHP!"); // bu bir ifade?>

Page 11: PHP Temelleri

12.10.2015

11

PHP Söz Dizimi

� PHP betik sınırsız sayıda ifadeden oluşabilir

� Bazı fonksiyonlar parantez kullanılmadan çağrılabilir

� Koda yorum satırları eklenebilir

� Tek satır yorum "//", "#" veya yorum bloğu için "/*" ve"*/" arasında

� Sadece "/*" – "*/" çok satırlı yorumlar için kullanılabilir

� Yorumlar çalıştırılmazlar ve tarayıcıya gönderilmezler

<?phpprint "<div>";print "Merhaba PHP!";print "</div>";?>

PHP Söz Dizimi

� Kısa açılış etiketi <?=

� İfadenin tarayıcıda yazdırılmasına zorlar

� print ile aynıdır

� ";" noktalı virgül ihmal edilebilir

<html><head><title>Merhaba dünya sayfası</title></head><body><?="Merhaba PHP!" ?></body></html>

Page 12: PHP Temelleri

12.10.2015

12

Değişkenler

� Değişken rakamla başlayamaz.

� Değikenler içinde özel karakterler kullanılamaz. Sadece harfler, sayılar ve _ işareti kullanılabilir.

� Geçersiz değişken tanımları;

� $3not, $2x, $a(, $toplam?,

� Geçerli değişken tanımları;

� $not, $not1, $toplam, $notlar_toplami

� Değişkenler içinde Türkçe karakterler kullanılmaz: Örneğin; ıİ,Şş,Çç,Ğğ,Öö,Üü

PHP Değişkenler

Page 13: PHP Temelleri

12.10.2015

13

PHP Değişkenler� PHP’deki tüm değişkenler (sabit değişkenler hariç)

dolar $ işareti ile başlar(Perl stili)

� PHP "type-less" bir dildir� Değişkenler bir tür ile bağlantılı değildir. farklı türde

değişken değerleri saklanabilir� int a = 5; şeklinde tanımlanmaz, $a = 5; yazmak

yeterlidir

� Herbir değişken değerin atandığı ilk yerde tanımlanmış olur� Tür belirtme hatalarının önüne geçilir!� Değerin türü değişken türünü belirler

<?php // $output string değişkeni tanımla$output = "<div>Merhaba PHP!</div>"; print $output;?>

PHP Değişken Türleri

� Sayısal (real veya integer)

� Ondalık ayraç noktadır ".", virgül ", " değil

� Boolean (true veya false)

� PHP değişkenleri true, TRUE, True veya false, FALSE, False olarak tanımlanır

� Empty string, sıfır ve bazı diğer değerler dolaylı olarak boolean ifadeler içinde "false" değerine çevrilirler

� boolean uygun kullanılmadığında probleme sebep olabilir

Page 14: PHP Temelleri

12.10.2015

14

PHP Strings

� String değerler

� String değerler tek veya çift tırnak içinde yazılabilir

� Başlangıç ve bitiş tırmakları aynı olmalı

<?$output1 = "Merhaba PHP!"; $output2 = 'Tekrar merhaba!';?>

PHP Diziler

� Array’ler kümelenmiş değerlerdir – her bir değer array içinde bir anahtara (key, index) atanmıştır.

� PHP ilişkisel dizileri destekler – key/index nümerik, string veya diğer sayısal türlerde olabilir

� Key/index dizi boyunca tekil olmalıdır

� Dizideki değerler farklı türlerde olabilir

� PHP diziler dinamiktir – yaratılırken belli bir büyüklükte tanımlanmaları gerekmez

Page 15: PHP Temelleri

12.10.2015

15

PHP Arrays

� PHP diziler array anahtar kelimesi ile tanımlanır

� "=>" anlamı "işaret etmek" tir

� Eğer anahtarlar belirtilmediyse otomatik olarak sıfırdan

başlayan değerler verilir

<?

// basit dizi

$arr = array ("a", "b", 7);

// bu ifade $arr[0], $arr[1] ve $arr[2]

// sırasıyla "a", "b" ve 7 değerlerini içeren

// diziyi üretir

$arr2 = array ("one" => 1, "two" => 2);

// bu ifade $arr2["one"] ve $arr2["two"]

// sırasıyla 1 ve 2 değerlerini içeren

// diziyi üretir

?>

PHP Diziler

� Dizi değerlerine "[" ve "]" arasındaki anahtar(key)/index değeri ile erişilir

� Diziler esnektirler ve değer türleri ve anahtar karışık olabilir

<?$arr = array ("a", "b", 7, "bir" => 1, "iki" => 2, "diger" => array(1,2,3));// anahtar/index türleri karışık:// $arr[0] => "a" ve $arr["bir"] => 1// $arr["diger"] yine bir dizidir// $arr["diger"][0]" => 1print $arr["diger"][2]; // tarayıcı çıktısı 3?>

Page 16: PHP Temelleri

12.10.2015

16

PHP NULL Değer

� PHP’de null olarak isimlendirilen özel bir değer vardır ve değişkenin bir değer almadığını gösterir

� Herhangi bir türde verinin olmadığını göstermek için kullanılır

� Tanımsız "undefined" değişkenden farklıdır!

� Boş string veya sıfır değerinden farklıdır<?$null_variable = null;?>

PHP Değişken Türleri

� PHP "object" değişken türünü destekler

� "Resource" (kaynak ) değişken türü

� Resouce türü, değişken değerinin bir kaynak veya veriye referans değeri tutar.

� Örnek – açık bir dosya, veri tabanı bağlantısı, v.b

Page 17: PHP Temelleri

12.10.2015

17

PHP Temel İfadeler

� PHP ifadeleri C dilindekine benzer

� "=" – değişkenlere değer atamak için kullanılır

� +, -, /, *, % - aritmetik işlemler

� ==, <=, >=, !=, <, > - karşılaştırma

� +=, -=, /=, *=, %=, ++, --,– önek/sonek operatörler

� ( and ) – ifade birleştirme için

� &, |, >>, <<, ^, ~ - bit bazlı operatörler

PHP Basic Expressions 2

� String operatörleri

� "." (period) – string birleştirme

� ===, !== karşılaştırma

� ==, != operatörlerinden farklıdır.

� "10"==10 işleminde sonuç true iken "10"===10karşılaştırmasında sonuç false

� Tam karşılaştırma – $a === $b :

� TRUE $a değişken değeri $b değişken değerine eşitse, ve aynı değişken türündeyseler.

� $a = $b = $c = 7;

Page 18: PHP Temelleri

12.10.2015

18

PHP Sabitler

� PHP’de sabit değişkenler define fonksiyonu ile tanımlanırlar

� Değeri değiştirilemez

� $ sembolü ile başlamaz

� Herhangi bir değeri tutabilir

<?define ('DEGISKEN_ADI', 123);// DEGISKEN_ADI, 123 değerini alırprint DEGISKEN_ADI; // 123 tarayıcı çıktısı verir?>

Temel Fonksiyonlar

Page 19: PHP Temelleri

12.10.2015

19

Bazı Temel Fonksiyonlar

� print fonksiyonunu gördük

� echo fonksiyonu da print ile aynıdır. printfonksiyonu bir değer geri döndürür.

� print_r(array) – key/index değerleri ile birlikte dizi değerleri tarayıcıya yazar.phpinfo() – sunucu, PHP ayarları, kurulu modüller v.b bir sayfa oluşturur

<?echo "123"; // tarayıcıda 123 çıktısı verir?>

Ön Tanımlı Değişkenler

Page 20: PHP Temelleri

12.10.2015

20

Ön Tanımlı Değişkenler

� PHP ön tanımlı birçok değişken ve sabit sağlar

� __FILE__, __LINE__, __FUNCTION__,

__METHOD__, __CLASS__ - hata ayıklama bilgisi içerirler.

� PHP_VERSION, PHP_OS, PHP_EOL,

DIRECTORY_SEPARATOR, PHP_INT_SIZE

ve diğerleri farklı platform desteği sağlayan uygulamaların kolaylıkla geliştirilmesine yardımcı olurlar.

Ön Tanımlı Değişkenler

� $_SERVER – dizi değişkendir, web sunucusuna ait

bilgileri tutar – headers, klasör yolları ve script yerleri

� DOCUMENT_ROOT – web sunucu yapılandırmasında

sitenin kök klasörüdür

� SERVER_ADDRESS, SERVER_NAME,

SERVER_SOFTWARE, SERVER_PROTOCOL

� REMOTE_ADDR, REMOTE_HOST, REMOTE_PORT

� PHP_AUTH_USER, PHP_AUTH_PW,

PHP_AUTH_DIGEST

� Ve diğerleri

Page 21: PHP Temelleri

12.10.2015

21

Ön Tanımlı Değişkenler

� $_GET, $_POST, $_COOKIE dizileri URL’den gelen gönderim gönderi ve cookie bilgilerini tutar

� $_FILES çok parçalı gönderim istekleri üzerinden başarılı yüklenen dosya bilgilerini tutan dizidir.array holds information for successfully

� $_SESSION bir oturumda saklanan değişken değerlerini tutan dizidir.

Değişken değişkenleri

� PHP $$ sözdizimini destekler- değişken değerinden değişken tanımlanır

<?$str1 = 'test';$test = 'abc';echo $$str1; // abc tarayıcı çıktısı üretir?>

Page 22: PHP Temelleri

12.10.2015

22

Strings Escaping

Strings escaping

� String’lerdeki özel karakterlerden ters bölü işareti ile kaçılır (C stili)

� Özel karakterler:

� \n – yeni satır (new line) (10 in ASCII)

� \r – carriage return (13 in ASCII)

� \t – yatay tab

� \v – düşey tab

� \\ - ters bölü

� \$ - dollar işareti

� \" – çift tırnak

$str1 = "bu bir\"PHP\"";

Page 23: PHP Temelleri

12.10.2015

23

String escaping

� Tek tırnak string’lerde de kullanım aynı şekildedir

� Fark \" yerine \' kullanılmasıdır

� Tek veya çift tırnak kullanılan stringlerde ters bölü diğer tüm karakterlerin önünde tarayıcıda görüntülenecektir!

$str1 = 'Arnold dedi ki: "I\'ll be back"';

String’ler içindeki değişkenler

� Çift tırnak içindeki string’ler biraz daha fazla özellik sağlarlar:

� Çift tırnak içinde kullanılan değişkenlerin taşıdıkları değerler kullanılır.

� Diziler hakkında not:

$saying = "I'll be back!";$str1 = "Arnold dedi ki: $saying";// çıktısı:// Arnold dedi ki: I'll be back!

$sayings = array ('arni' => "I'll be back!");$str1 = "Arnold dedi ki: ${sayings['arni']}";

Page 24: PHP Temelleri

12.10.2015

24

Heredoc (Yorumlu Metin) sözdizimi

� String’ler (dizgeler) heredoc sözdizimi ile başlar ('<<<')

� Bir yorumlu metin daima <<< karakterleri ile başlar ve hemen ardından bir betimleyici ve bir satırsonu karakteri gelir.

� Uzun HTML kodlarını echo veya print ile yazmaya göre daha kullanışlıdır.

$str = <<<EOTBurası string içerikEOT;

Heredoc (Yorumlu Metin) sözdizimi

� Asıl string (dizge) satırsonu karakterinden sonra yer alır.

� Dizgenin sonunu belirtmek üzere dizgenin sonuna, baştaki betimleyici konur.

� Kapanış betimleyicisinin dizgeden sonraki satırın başında olması gerekir.

� Betimleyici PHP'deki diğer isimlere uygulanan kurallara uygun olmalıdır: Sadece bir harfle veya alt çizgi imi ile başlayabilir; sadece harfler, rakamlar veya alt çizgi imleri içerebilir.

Page 25: PHP Temelleri

12.10.2015

25

Avantaj ve

Dezavantajlar

Avantajlar ve Dezavantajlar

� Avantajlar

� Öğrenmesi kolaydır, açık kaynak, çoklu platform ve veri tabanı desteği, eklentiler, topluluk ve ticari destekli.

� En hızlı dillerden biri varsayılmaktadır

� Dezavantajlar

� Gevşek bir söz dizimi– risk hoşgörülü, zayıf hata yakalama, zayıf OOP (sürüm 6 öncesi oldukça fazla eksik bulunuyor!)

Page 26: PHP Temelleri

12.10.2015

26

PHP Temelleri

Sorular?