Eskişehir Osmangazi Üniversitesi, Eğitim Fakültesi, Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümünde açılan İnternet Tabanlı Programlama ders notları.
1. 12.10.2015
1
İnternetTabanlı
Programlama
PHPTemelleri
Yrd.Doç.Dr.Celal Murat KANDEMİR
ESOGÜ – Eğitim Fakültesi - BÖTE
twitter.com/cmkandemir
GerekliYazı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
2. 12.10.2015
2
GerekliYazı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
PHPTemelleri
Yrd.Doç.Dr.Celal Murat KANDEMİR
ESOGÜ – Eğitim Fakültesi - BÖTE
twitter.com/cmkandemir
3. 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?
4. 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ışır
1. 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
5. 12.10.2015
5
PHP Nasıl Çalışır
1. 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
6. 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
7. 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>
8. 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
10. 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ı
<?php
print («Merhaba PHP!"); // bu bir ifade
?>
11. 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
<?php
print "<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>
12. 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çindeTürkçe karakterler kullanılmaz:
Örneğin; ıİ,Şş,Çç,Ğğ,Öö,Üü
PHP Değişkenler
13. 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şkenTü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
14. 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
15. 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]" => 1
print $arr["diger"][2]; // tarayıcı çıktısı 3
?>
16. 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şkenTü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
17. 12.10.2015
17
PHPTemel İ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"===10
karşı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;
18. 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ır
print DEGISKEN_ADI; // 123 tarayıcı çıktısı verir
?>
Temel Fonksiyonlar
19. 12.10.2015
19
BazıTemel Fonksiyonlar
print fonksiyonunu gördük
echo fonksiyonu da print ile aynıdır. print
fonksiyonu 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
?>
ÖnTanımlı Değişkenler
20. 12.10.2015
20
ÖnTanı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.
ÖnTanı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
21. 12.10.2015
21
ÖnTanı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
?>
22. 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"";
23. 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']}";
24. 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 = <<<EOT
Burası string içerik
EOT;
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.
25. 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!)