PHP: Fonksiyonlar

No Comments

Dinamik olarak kullanılabilen altprogramlar biçiminde tanımlayabileceğimiz fonksiyonlar, PHP dilinin gücünü aldığı en önemli bileşenlerdir. Şöyle ki, günümüzde yazılmış 1000’den fazla dahili PHP fonksiyonu bulunmaktadır. Bunlara anonim olarak yazılmış ve İnternetten ulaşılabilen binlerce kullanıcı-tanımlı fonksiyonu da katarsak, konunun önemi ortaya çıkacaktır.

Fonksiyonları yazma amacımız, çeşitli programlar tarafından kullanılan, ya da aynı program içerisinde tekrarlanması gereken işlevsel kodları tekrar kullanılabilir programcıklar olarak oluşturmaktır. Bu programcıklar, ana program ile iki yönlü olarak veri alışverişinde bulunabilirler. Kendi kendilerine çalışmazlar, sadece ana program tarafından çağırıldıklarında çalışırlar.

Kullanıcı tanımlı fonksiyonlar, PHP dilini kullanarak uygulama geliştirenler tarafından yazılan fonksiyonlardır. Bunlar İnternet üzerinden yoğun olarak paylaşılmaktadır.

Dahili fonksiyonlar ise doğrudan PHP çözümleyicisi tarafından denetlenen, PHP geliştirme grubu tarafından yazılmış kullanıma hazır fonksiyonlardır.

Kendi programlarınızda kullanmak üzere, kendi fonksiyonlarınızı yazabilirsiniz. Bunun için genel olarak aşağıdaki gibi tanımlama yapmanız yeterli olacaktır:

Bu şekilde tanımlanan bir fonksiyonu çağırmak için adını yazmamız yeterli olacaktır.

Basit bir örnekle başlayalım. İşlevi; ekrana adınızı yazmak olan bir fonksiyon tanımlayalım ve onu ana programımızdan çağırarak kullanalım.

HTML çıktısı:Benim adım Kamil ERSÖNMEZ  olacaktır.

Kullanıcı Tanımlı Fonksiyonlar

Kullanıcı Tanımlı Fonksiyonlar diğer adıyla User Defined Functions; adından da anlaşılabileceği gibi program içerisinde benzer kodları farklı yerlerde çalıştırılması ve bu kodları her seferinde tekrar tekrar yazmaması için programı yazan kullanıcı tarafından oluşturulan fonksiyonlardır.

Yukarıda oluşturulan fonksiyon tanımı, PHP tarafından doğrudan çalıştırılmaz çünkü kullanıcı tarafından oluşturulmuştur. Bu fonksiyonu çalıştırmak için ana program bloğu içerisinden çağrılması gereklidir.

Kullanıcı Tanımlı Fonksiyonlar – Parametreler ve Dönen Değerler

Fonksiyonlar, ana programdan farklı türlerde veriyi alabilirler. Değerleri ana programdan fonksiyonlara taşıyan bu yapılara parametre adı verilir.

Bir fonksiyon, parametreleri kullanarak ya doğrudan bir işlevi yerine getirir, ya da ana program için bir değer üretir. Eğer bir değer üretmiş ise bu değerin ana programa döndürülmesi için kullanılan deyim, “return” deyimidir.

Sonuç:

Aşağıdaki örnekte ise, fonksiyon tarafından üretilen değer ana programa gönderilmektedir.

Sonuç:1100 TL gelirin vergi düşülmüş hali 880 TL'dir.

Diğer bir örnek olarak, Akış Kontrol Deyimleri konumuzda yer alan Switch/Case ile yaptığımız tek basamaklı bir sayının Türkçe okunuşunu yazacak programı, bu defa fonksiyon kullanarak tasarlayalım.

Dahili Fonksiyonlar

Dahili fonksiyonlar, gün geçtikçe artan sayıları itibarı ile herhangi bir ders kapsamında bütün detayı ile ele alıp anlatılabilecek bir konu değildir. Bu fonksiyonların öğrenilmesi daha çok, gereksinim duydukça referans kaynakları vasıtasıyla gerçekleşmektedir.

Bu bölümde, dahili fonksiyonların kullanımına yönelik bazı örnek programlar vereceğiz.

Aşağıdaki örnek program öncelikle scandir klasör fonksiyonunu kullanarak etkin klasörde yer alan “proje” klasörünün içeriğini almakta, daha sonra print_r dizi fonksiyonu bu bilgiyi bir dizi formatında ekrana yazdırmaktadır.

Sonuç:

Aşağıdaki örnekte programın çalışması bir hata (error) fonksiyonu kullanılarak durdurulmakta ve hata mesajı verilmektedir.

Yuvarlama fonksiyonlarının kullanıldığı bir örnek aşağıda verilmiştir.

Sonuç:

Karekökü tamsayı olan sayılara “tam kare sayılar” adı verilir.

Örneğin 4, karekökü olan 2 tamsayı olduğundan bir tam karedir. 9, 16 ve 25 de tam kare sayılardır, ancak 5,6,7,8 değildir.

Şimdi yazacağımız PHP programı, 1 ile 1000 arasındaki tam kare sayıları listeleyecektir.

Bu örnekte dikkat etmemiz gereken nokta, sayının karekökünün tamsayı olup olmadığının anlaşılması için PHP fonksiyonlarının nasıl kullanıldığıdır.

Bu işlem için iki matematik fonksiyonu kullanılmıştır: floor ve sqrt.

Eğer bir sayının karekökünün tam kısmı, sayının kareköküne eşit ise o sayı bir tam kare sayıdır:

if (floor(sqrt($sayi))==sqrt($sayi))

Şimdi string fonksiyonlarını kullanan bazı örnek programlar tasarlayalım.

İlk örneğimiz, 1949 yılında Hintli matematikçi Kaprekar tarafından tanımlanan Kaprekar sayıları ile ilgili olsun.

n basamaklı bir t Kaprekar sayısının karesi alınıp sağdaki n basamağı solda kalan n-1 basamağa eklendiğinde sonuç yine t sayısını verir.

Örneğin; 55, iki basamaklı bir sayıdır.

55² = 3025, sağdan iki basamak 25, soldan iki basamak 30.

Bu iki sayının toplamı 30+25=55 yani sayının kendisidir.

1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4950 sayıları da diğer bazı Kaprekar sayılarıdır.

Yazacağımız program, bir for döngüsü içerisinde 1 ile 100.000 arasındaki bütün Kaprekar sayılarını substr fonksiyonunu kullanarak listelesin.

Bu örneğimizde, kullanıcının adını, soyadını ve e-posta uzantısını kullanarak e-posta adresini otomatik olarak oluşturacak programı yazalım.

Uygulamamız e-posta adresini şu kurala göre oluştursun:

[Adın ilk harfi].[Soyad]@[e-posta uzantısı]

Örneğin adı Kamil, soyadı ERSÖNMEZ olan bir kullanıcı için, paint.com.tr eposta uzantısına göre, kamil.ersonmez@paint.com.tr e-posta adresi oluşturulsun.

Burada çözmemiz gereken en önemli problem, Türkçe harflerin benzer İngilizce harflere dönüştürülmesidir. Örneğin “ğ” harfinin “g” harfine dönüştürülmesi gibi.

Bunu bizim için, yazacağımız bir dönüşüm fonksiyonu yapacaktır.

Yazdığımız turkceharf_donustur() fonksiyonu, kendisine gelen Türkçe harfi benzeri İngilizce harfe dönüştürmektedir.

Önce adın ilk harfi ile soyad küçük harfe dönüştürülerek ve araya nokta işareti konularak birleştirilmektedir. Daha sonra oluşturulan bu string, harf harf fonksiyonumuza gönderilmekte ve içerisinde bulunan Türkçe harfler dönüştürülmektedir.

Sonuç olarak elde edilen string, e-posta uzantısı ile birleştirilmek üzere e-posta adresi elde edilmektedir.

Aynı işleve sahip, ancak kodu önemli ölçüde azaltacak başka bir yöntemde, dönüştürme işleminde diziler kullanılmaktadır.

Şimdilik fonksiyonlar konumuzun sonuna geldik.

Diğer Yazılarımız

Tüm Yazılarımız

Soru işareti kalmasın

Bu yazı hakkında aklınıza takılanlar, bir fikriniz belkide şikayetiniz vardır. Yada yazımızda hatalar olduğunu düşünüyor olabilirsiniz. Peki neden bize ulaşmayı düşünmeyesiniz ki?

Hizmetlerimiz

Binlerce müşterimizin yararlandığı 100'e yakın hizmetlerimizden sizlerde yararlanabilirsiniz. Onlarca ücretsiz web hizmeti ve profesyonel destekle sizleri daima daha ileriye taşımayı hedefliyoruz.

Tüm Yenilik ve Kampanyalardan Haberdar Ol

Yazı hakkında ne Düşünüyorsunuz?