Geldik işimize en çok yarayacak konulardan birine. Fonksiyonları size şöyle anlatacağım.
Diyelim ki büyük bir proje hazırlıyorsunuz. Sık kullanacağınız komutları bir fonksiyon içinde yazarak, gerektiğinde çağırırsınız. Fonksiyon çağrıldığı yerde içerisinde bulunan komutları işler. Çağrılmadan bir işlem yapmaz. Örneğin; sürekli veritabanı bağlantısı kullanıyorsanız bunu bir fonksiyona yazarak gerektiğinde çağırarak bağlantıyı kurmuş olursunuz. Bu size hem zamandan tasarruf hem de daha kısa kod yazmanızı sağlar.
Genel yazım şekli aşağıdaki gibidir.
Alıntı:
function fonksiyon_adi(degişken1,$değişken2….) {
yapılacak komutlar
}
İlk fonksiyonumuzu yazalım.
Kod:
function ilk_fonksiyon() {
echo "Bu bizim ilk fonksiyonumuz";
}
Fonksiyon çağrılmadığı için ekranda hiçbir şey göstermez. Kodumuzu şu hale getirip sonucu gözlemleyelim.
Kod:
function ilk_fonksiyon() {
echo "Bu bizim ilk fonksiyonumuz";
}
ilk_fonksiyon();
yada
Kod:
function ilk_fonksiyon() {
echo "Bu bizim ilk fonksiyonumuz";
}
echo ilk_fonksiyon();
Bu basit bir fonksiyondur. Şimdi fonksiyona değişken ile veri gönderelim.
Kod:
function ilk_fonksiyon($icerik) {
echo $icerik;
}
echo ilk_fonksiyon("Ne yazarsam onu göster bakayım");
Evet fonksiyona değer gönderdim. Şimdi biraz değişkenlerde gördüklerimizi hatırlayın ve aşağıdaki örneği inceleyin.
Kod:
function ilk_fonksiyon(&$icerik) {
$icerik.=" Online";
}
$ek="Netopsiyon";
ilk_fonksiyon($ek);
echo $ek;
Dersler zorlaşıyor diye düşünebilirsiniz. Haklısınız dersler zorlaşıyor. Çok fazla açıklama yapmama gerek yok. Eski dersleri takip ettiyseniz ve örnekleri tek tek inceledinizse bu dersleri anlamakta zorluk çekmezsiniz.
Kodumuza geri dönersek; Önce fonksiyon tanımladım. Fonksiyona değişkeni &$icerik gibi eklediğimi gördünüz. Bu durumu birazdan açıklayacağım. Sonraki satırda $icerik.= diyerek değişkenin devamını olarak gideceğini söyledim. Sonra $ek diye bir değişken tanımladım ve değer atadım. Fonksiyonu tanımladığım değişkenle çağırdım. Değişken içeriği fonksiyona gitti. Fonksiyonda kendisine gelen bu veriyi aldı ve $icerik adlı değişkenin başına ekledi. Sonrasında $ek adlı değişkenimizi çağırdım.
Bu kod bize Netopsiyon sonucu verecektir. Kodu aslında şöyle de yazabilirdiniz;
Kod:
$site="Netopsiyon";
echo $site;
İlk örnekteki $$ yazınca PHP $degisken adlı değişkenin site adlı bir değişkenin değerini aldığını bilecek ve onu gösterecektir. İlk örnekteki $$degisken yerine $degisken yazsaydık karşımıza site yazısı çıkacaktı. Bu yöntem sayesinde az bir kodla yüzlerce veriyi ekrana yazdırabiliriz.
Peki &$ olayı nedir? İki değişken arasındaki veri alışverişinin dinamik olmasını sağlar diyebilirim. Örnekleyelim;
Sonuca bakarsanız karşınıza Online gelecektir. Yani bakın değişken içeriğini alt tarafa yazdığımız bir başka değişkenle değiştirdim. Off amma kafanız karıştı Peki olayı şöyle anlatayım. Birinci değişkenin tuttuğu değeri değiştirmeden, ikinci değişkene birinci değişkenin değerini dinamik olarak atadık. Dinamik atama nedeniyle birinci değişkenin değeri değiştiği anda ikinci değişkenin değeri de değişecektir. Biz ikinci değişkeni çağırdığımız sürece istediğimiz an değerleri değiştirebiliriz.
Kafa karıştırmaya devam etmeyeyim ve fonksiyonlara geri döneyim. Geriye doğru örneklere bakarsanız bir örnekte bu olayı kullandım. Şimdi fonksiyonlarla bir çarpma işlemi yapacağım.
Kod:
function carp($sayi1,$sayi2) {
return $sayi1*$sayi2;
}
echo carp(10,5);
Örnek hoş güzel oldu ancak ya ikinci sayıyı girmeyi unutursam ne olur? Tabii ki hata verecektir. Warning: Missing argument 2 for carp() in deneme.php online 2 gibi bir hata olması hoş olmaz. Bu durumu düşünerek birkaç alternatif üretin bakalım. Bu soruyu cevaplayanlar önceki konuları az çok öğrenmişlerdir.
Fonksiyon dışında bir değişken tanımladım ve fonksiyon içinde değişkeni göster dedim. Ancak ekrana hiçbir şey çıkmadı. Çünkü değişkeni fonksiyonda tanımlamadık. Değişkeni fonksiyonda tanımlamadan kullanmanın yolu yok mu? Elbette var. global tanımlama yöntemi. Örneği şu hale getirelim.
Kod:
$icerik="PHP Derslerinde Fonksiyonları İşliyoruz";
function icerigi_cagir() {
global $icerik;
echo $icerik;
}
icerigi_cagir();
İşte sonuç karşımızda. Fonksiyon dışında birden fazla değişkeni fonksiyona atayalım şimdi. Bu işlem için her değişken arasına global tanımlamada virgül kullanırız.
Kod:
$ders="PHP Derslerinde";
$konumuz="Fonksiyonları İşliyoruz";
function icerigi_cagir() {
global $ders, $konumuz;
echo "$ders $konumuz";
}
icerigi_cagir();
Kod:
function degisken_cikar() {
$topla=0;
$topla++;
echo $topla." ";
}
Bu örneği çalıştırırsak karşımıza "1 1 1 1" gelecektir. Fonksiyonu 4 defa çağırdığım için bu hale geldi. Ancak $topla++; bir işe yaramadı. Ben 1 2 3 4 çıkmasını istiyorum. Bakın bu durumda örneği ne hale getiriyorum.
İşte benim istediğim buydu. Burada static ile değişkeni fonksiyon dışına çıkarmak için bir ön hazırlık yapıyoruz ve fonksiyon her çağrıldığında değerin bir artmasını sağlıyoruz.
Örnekleri biraz geliştirmeye çalışın.
Örneğin global kullanarak basit bir toplama yapalım.
Kod:
$x=2;
$y=20;
$z=8;
function topla() {
global $x,$y,$z;
echo "$x+$y+$z="." ".($x+$y+$z);
}
topla();
Fonksiyonlar şimdilik bu kadar. Bir sonraki dersimize kadar önceki derslere bir geri dönüş yapın. Onları bir inceleyin, örnekleri deneyin ve sonuçları not alın. Bir sonraki derste form işlemeye giriyoruz.
Kayıt: Jan 07, 2006 Mesajlar: 1719 Konum: İstanbuL //
Tarih: 2007-08-26, 16:58:56 Mesaj konusu:
Kod:
<?
$site = "netopsiyon";
$amac = "webmaster platformu";
$nuke = "sitenin geneli nukeci";
function sercan()
{
global $site, $amac, $nuke;
echo "en sevdiğim site $site amacı ziyaretçilerini bilgilendirmek bir $amac olarak fakat $nuke yaklaşık 4 senedir hatta 5 mi oldu :) hizmette kusur etmemekte...";
}
sercan();
?>
yanlız
Kod:
echo en sevdiğim site $site amacı ziyaretçilerini bilgilendirmek bir $amac olarak fakat $nuke yaklaşık 4 senedir hatta 5 mi oldu :) hizmette kusur etmemekte...;
Sağol Aliosman kardeş... devamı nezaman gelecek suana kadar php ile ilgili kaynakların bir coğu nerdeyse anlatılan öğretilen şeyler hep aynı .... umarım sende diğerleri gibi yarıda bırakmazsın
Bu forumda yeni başlıklar açamazsınız Bu forumdaki başlıklara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız