Fonksiyonlar - İsmail KIRBAŞ ile Web Sitesi Tasarımı
İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | PHP | Fonksiyonlar

Diğer Yazılar
Yapı Taşları
PHP de Dosya İşlemleri
PHP de Metin Düzenleme İşlemleri
Operatörler
Veri Aktarımı
Sekmeli Menü 1
Sekmeli Menü 2
Hızlı RSS Hazırlama
Web Formları İçin Güvenlik Kodu Oluşturma
PHP ye Giriş
PHP ye Giriş 2
Php ile COM Port Kontrolü
Kaya Sağlamlığında Kodlama


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:6316Güvenlik Kodu:6316Güvenlik Kodu:6316Güvenlik Kodu:6316




En Son Okunan 10 Makale
  1. Görünmez Menü ve Tasarım
  2. Okunacak Kitaplar
  3. AJAX a Giriş
  4. Kaynaklar
  5. Renklerin Psikolojik Mesajları
  6. Niçin Web Sitesi ?
  7. Kitle İletişim Dili
  8. Grafik Tasarım Ürününün Öğeleri
  9. Renklerin Dili - Mavi
  10. İşaretleme Dillerinin Tarihi
 
Fonksiyonlar>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

Dr. Hakkı Öcal'ın deyimiyle fonksiyonlar bilgisayar programlarının kalbidir. Fonksiyonlar bir kere tanımlanır ve programın ihtiyaç duyulduğu noktalarında çağrılırlar. Genellikle bir iş yada hesaplama yaparlar ve sonuç olarak yeni bir değer döndürürler.

Örneğin bir online alış veriş sitesine ait ürünlerin isimlerinin ve fiyatlarının olduğu bir (yada birden fazla) tablo oluşturmamız gerektiğini farzedelim. Ürünlerin fiyat değerleri, üzerlerinde aritmetik işlem yapılabilmesi için "1000000" ya da "3500000" gibi saf halde tutulmalıdır. Fakat ziyaretçilerin göreceği tabloda fiyatları "1.000.000 TL" ya da "3.500.000 TL" gibi ayraç karakterleri ile göstermemiz gerekir. Bu dönüştürme işlemini tablonun satırlarını oluşturduğumuz döngünün içine koyarak her defasında satır satır yazmaktan kurtulmuş olabiliriz. Ama bu sadece bizi o sayfa için kurtarır. Olması gereken; bu dönüştürme işlemini bir fonksiyon şeklinde yazmak ve programımız çerçevesinde hangi sayfada kullanmak lazım geliyorsa o sayfada fonksiyonu çağırmak. Hatta başka benzer PHP projelerinde de bu fonksiyonu rahatlıkla kullanabiliriz.

Örnekten de anlaşılacağı üzere fonksiyonlar bir (yada daha fazla) değer alıp (bu giriş değerlerine fonksiyonun parametresi denir) üzerinde işlem yapar ve yeni bir değer geri döndürür. Hiç parametre almayan fonksiyonlar da olabileceği gibi geriye değer döndürmeyip çağrıldığı anda doğrudan işini yapan (mesela ekrana yazan) fonksiyonlar da tanımlanabilir, phpinfo() bu tür fonksiyonlara iyi bir örnektir.

PHP'nin phpinfo() gibi yüzlerce hazır fonksiyonu vardır. Bunlardan en çok kullanılanlarından biri şüphesiz ekrana yazdırmaya yarayan print() fonksiyonudur. Print fonksiyonu parametre olarak verilen değeri doğrudan tarayıcı ekranına yazar. Bu işlemi başarılı bir şekilde yaptığında geriye 1 değerini döndürür.

<?
print "Ekrana yazıyorum..<br>";

$a=print "Ben de...<br>";
print 
$a;
?>


Bu kodun çıktısı:

Ekrana yazıyorum..
Ben de...


PHP fonksiyonları aşağıdaki şekilde tanımlanır.

function FonksiyonAdi(parametre1,parametre2,...)
{
    fonksiyonun yapacagi islemler
}


Geriye değer döndürme return ifadesi ile yapılır.


Örnek

PHP'de mutlak değer alan fonksiyon abs() olarak tanımlanmıştır ama pratik yapmak için ilk örneğimizde biz kendi mutlak değer alan fonksiyonumuzu yazalım. (Mutlak değer fonksiyonunun çalışma prensibi: Verilen değer negatifse eksi ile çarpılır, 0 yada pozitifse aynen korunur.)

<?
function Mutlak($sayi)
{
    
$sonuc=$sayi<? -$sayi $sayi;    // Kısa switch ifadesi (Bkz. Program Denetimi)
    
return $sonuc;
}

//Kullanımı

print "-3'ün mutlak değeri: ".Mutlak(-3)."<br>";
print 
"0'ın mutlak değeri: ".Mutlak(0)."<br>";
print 
"12'nin mutlak değeri: ".Mutlak(12);

//Aynı fonksiyonu daha kısa olarak şu şekilde de yazabiliriz:

function Mutlak2($sayi)
{
    return 
$sonuc=$sayi<? -$sayi $sayi;
}

// ya da

function Mutlak3($sayi)
{
    return 
$sayi<? -$sayi $sayi;
}

/* Bir PHP programında aynı adlı birden fazla fonksiyon bulunamaz.
O nedenle diğer fonksiyonların isimlerini Mutlak2 ve Mutlak3
olarak verdik. */

?>


Bu kodun çıktısı:

-3'ün mutlak değeri: 3
0'ın mutlak değeri: 0
12'nin mutlak değeri: 12


Örnek:

Bir web sayfasında çok rastlanan unsurlardan biri email bağlantılarıdır. Bilindiği üzere bu bağlantılar HTML'in anchor (A) etiketi ile aşağıdaki gibi yapılır.

<a href="mailto:hcivelek@kuzen.net">hcivelek@kuzen.net</a>


Bu kodun çıktısı yine bilindiği üzere şu şekildedir: hcivelek@kuzen.net

Şimdi bir fonksiyon hazırlayalım ve kendimizi bu küçük ama çok sık tekrarlandığında yorabilen dertten kurtaralım. Fonksiyonumuza parametre olarak email adresi verelim ve o bizim için bunu bağlantı şekline getirsin.

<?
function eLink($email)
{
    print 
"<a href="mailto:".$email."">".$email."</a>";
}

//Kullanımı

print "İşte benim email adresim:";
eLink("hcivelek@kuzen.net");
print 
"<br> Bu da Sefa'nın email adresi:";
eLink("sefa@kuzen.net");
?>


Farkettiğiniz gibi bağlantıyı oluşturmak için bir nebze olsun zahmetten kurtulduk ama bu kez de ekrana yazacağımız diğer metinleri sürekli bölmek zorunda kaldık. Bunun nedeni hazırladığımız fonksiyonun geriye değer döndürmeksizin yaptığı işlemi direkt ekrana basıyor olmasıdır. Halbuki bağlantıyı oluşturan ifadeyi yazdırmadan geriye döndürse biz bu değeri daha rahat kullanabiliriz. Aşağıdaki örneğimizde fonksiyonumuzun yeni şeklini görüyoruz.

<?
function eLink($email)
{
    return 
"<a href="mailto:".$email."">".$email."</a>";
}

//Kullanımı

print   "İşte benim email adresim:".eLink("hcivelek@kuzen.net")
        .
"<br> Bu da Sefa'nın email adresi:".eLink("sefa@kuzen.net");
?>


Fonksiyonları kullanırken parametreleri (eğer seçimlik değillerse) muhakkak belirtmek zorundayız. Aksi halde program hata verecektir.


Sayfa başına geri dön..

Öntanımlı (seçimlik) Parametreler



Bazı fonksiyonlarda parametrelerden bir yada birçoğu sürekli olarak aynı değerleri alabilir. Bu tür durumlarda programcı bu değeri fonksyionu tanımlarken öntanımlı (varsayılan) değer olarak belirtebilir. Öntanımlı olarak belirtilen bu parametrelerin fonksiyonu kullanırken yazmak zorunluluğu ortadan kalkar. Yani yazılmazsa öntanımlı değer işlem görür yazılırsa bu kez yazılan değer işlem görür.

Seçimlik yapılmak istenilen parametrelere bir değer atamak zorunlu değildir. Öntanımlı değer olarak boşluk ("") verilebilir.


Örnek:

Bir sitenin hemen hemen tüm sayfalarında sayfa başlığı (title etiketinin değeri) aynıdır. Çok nadir değiştirilir. Tabi ki bir web sayfasının başlık kısmında (head) sadece sayfa başlığı yer almaz. Sayfanın içerdiği karakterlerin tarayıcı tarafından doğru yorumlanabilmesi için karakter seti tanımlamaları, arama motorlarının kullanabilmesi için sayfanın (yada sitenin) içerdiği anahtar kelimelerin tanımlanması da bu alanda yapılır. Daha başka tanımlamalar da mevcuttur. Sayfanın bu başlık kısmında bu son saydıklarımız hemen hemen site içindeki her sayfa için aynıdır. En çok değişme ihtimali sayfa başlığı (title) etiketi için geçerlidir ki o da nadir.

O halde sitemizdeki her sayfada rahatlıkla kullanabileceğimiz bir fonksiyon yazalım. Bu fonksiyon parametre olarak sadece sayfa başlığı (title) değişkenine sahip olsun. Bu değişkeni öntanımlı olarak site adını içerecek şekilde belirleyelim. Böylece fonksiyon kullanılırken başka değer belirtilmediği müddetçe her sayfanın sayfa başlığı site adı olacaktır. Fonksiyon, sayfa başlığının site için kullanacağımız tüm başlık (head) öğelerini de içerecektir. Böylece her sayfa için bu kısmı tekrar tekrar yazmaktan ve olası bir değişiklikte tüm siteyi güncellemekten kurtulmuş olacağız.

<?

/* n ifadesi sayfanın HTML kodunun düzgün görünmesi için kullanılmaktadır.
Zorunlu değildir. */

function Baslik($title="KUZEN.NET")
{
    print
    
"<head>n"
    
."<title>".$title."</title>n"
    
."<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-9">n"
    
."<meta http-equiv="Content-Type" content="text/html;charset=windows-1254">n"
    
."</head>n";
}

?>


Örnek:

Bu konunun ilk örneklerinde hazırladığımız email bağlantısı yapmaya yarayan fonksiyonda ufak bir değişiklik yapalım. Fonksiyonumuza ikinci bir parametreyi seçimlik olarak ekleyelim ve bu parametre girilmişse email bağlantımızın web sayfasında görünecek olan kısmında bu ifade yazsın. Eğer ikinci parametre boş bırakılmışsa bağlantının görünecek olan kısmına eskiden olduğu gibi birinci parametre olarak girilmesi zorunlu olan email adresi gelsin.

<?
function eLink($email,$isim="")
{
    
$isim=$isim $isim $email;       // Kısa switch ifadesi
    /* isim değişkeni öntanımlı olarak boş bırakılmış.
    Bu kısa switch ifadesinde eğer isim değişkeni, fonksiyon çağrılırken girilmiş ise bu değer
    yine isim değişkeni üzerinde muhafaza edilsin, aksi halde isim değişkeninin değeri email değişkeninin
    değeri ile aynı olsun denmektedir.*/

    
return "<a href="mailto:".$email."">".$isim."</a>";
}

//Kullanımı

print   "Bana email atmak için ".eLink("hcivelek@kuzen.net","Benim Adresim")
        .
"'e tıklayın..<br>"
        
."Bu da Sefa'nın email adresi:".eLink("sefa@kuzen.net");

//Gördüğümüz gibi seçimlik parametrenin girilmesi zorunlu değil..

?>


Bu kodun çıktısı :

Bana email atmak için Benim Adresim'e tıklayın..
Bu da Sefa'nın email adresi:sefa@kuzen.net

Sayfa başına geri dön..

Global ve Statik Değişkenler

Bir fonksiyonu oluştururken parametre olarak tanımladığımız değişkenler birer ara elemandırlar. Fonksiyon her çalıştırıldığında giriş parametrelerini bu değişkenler karşılar ve fonksiyon içindeki işlemlerde bu değişkenler kullanılır. İşlemler tamamlandıktan sonra yani fonksiyonun görevi bittiğinde bu ara değişkenler bellekten silinir. PHP ana programımızdaki diğer değişkenleri doğrudan fonksiyonların içinde kullanamayız. Bunun için global ifadesini kullanmamız gerekmektedir. Bu ifadenin yanında yer alan değişkenler ana programdan çağrılacaktır ve üzerlerinde yapılacak herhangi bir değişiklik doğrudan kabul görecektir.

Örnek:

<?
function azaltNormal($icDeger)
{
    
$icDeger--;
    print 
"Fonksiyonun içinden bir ses--> İç Değer: ".$icDeger."<br>";
}

function 
azaltGlobal()
{
    global 
$anaProgramDegiskeni;
    
$anaProgramDegiskeni--;
    print 
"Fonksiyonun içinden bir ses--> Ana Program Değişkeni: ".$anaProgramDegiskeni."<br>";
}

$anaProgramDegiskeni=100;

print 
"Ana Program Değişkeni: ".$anaProgramDegiskeni."<br>";
print 
"İç Değer: ".$icDeger."<br>";

print 
"azaltNormal() 12 parametre değeri ile çalıştırılıyor...<br>";
azaltNormal(12);
print 
"Ana Program Değişkeni: ".$anaProgramDegiskeni."<br>";
print 
"İç Değer: ".$icDeger."<br>";

print 
"azaltGlobal() çalıştırılıyor...<br>";
azaltGlobal();
print 
"Ana Program Değişkeni: ".$anaProgramDegiskeni."<br>";
print 
"İç Değer: ".$icDeger."<br>";

?>


Bu kodun çıktısı:

Ana Program Değişkeni: 100
İç Değer:
azaltNormal() 12 parametre değeri ile çalıştırılıyor...
Fonksiyonun içinden bir ses--> İç Değer: 11
Ana Program Değişkeni: 100
İç Değer:
azaltGlobal() çalıştırılıyor...
Fonksiyonun içinden bir ses--> Ana Program Değişkeni: 99
Ana Program Değişkeni: 99
İç Değer:


Fonksiyonların içindeki değişkenler fonksiyonun görevi tamamlandığında bellekten silinir. Eğer fonksiyonun elde ettiği değer daha sonra tekrar kullanılacaksa bu silinmeyi engellemek için fonksiyonun içinde o değişkeni static olarak tanımlamak gerekir.

Örnek:

<?

function OnArtır()
{
    static 
$i=10;
    
$i++;
    print 
$i."<br>";
}

OnArtır();
OnArtır();
OnArtır();
?>


Bu kodun çıktısı:

11
12
13



Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : Hasan Civelek
Son Güncelleme : 29 Mayıs 2005, Pazar
Sayfa Sürümü : 1
Okunma Adedi : 12,347
Son Okunma : 2017-12-14 13:23:49
Kaynaklar : http://www.bthayat.net/site/yazi_goster.php?id=167

OperatörlerFonksiyonlarVeri Aktarımı
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 4 kişi çevirimiçi | Bugün =58 | Dün =163 | Bu Ay=2,672 | Günlük En Fazla=1,109 tekil ziyaretçi