Merhaba arkadaşlar mobilhanem.com için hazırladığımız php derslerimizde bu ders Statik Method ve Değişkenlere bakacağız. Statik anahtar kelimesi kullanılan değişken, method veya sınıfın bir örneği (instance) oluşturulmadan o özelliğe ulaşılmasını sağlar. Yani new anahtar kelimesi ile bir örnek(instance) oluşturmaya gerek kalmadan o özelliği kullanabilmemizi sağlar. Statik methodlar belleğin farklı kısımlarında kaydedilirler ama şuan konumuzun dışında olduğu için değinmeyeceğim. Merak edenler dinamik bellek yönetimini araştırabilirler.
Statik Method ve Değişkenler
Statik method ve değişkenler bizim işimizi bir hayli kolaylaştırırlar. Mesela site ayarlarını tuttuğumuz bir classımız olduğunu düşünün. Bu ayarları kullanmak istediğimiz her sayfada yeniden o sınıfı oluşturmak bizim performansımızı olumsuz yönde etkiler. Biz bu değerleri statik olarak tanımlarsak bellekte bir kere kaydolurlar ve isteğimiz sayfada da bir örnek oluşturmadan kullanabiliriz.
Statik bir değişken veya method oluştururken static anahtar kelimesini kullanırız. Örneğin:
Veya bir sınıf içinde method oluşturmak istersek:
class Deneme {
public static $a = 5;
public static function Test() {
echo “Test Methodu Yazıdırıldı”;
}
}
// Çağırma Şekli
Deneme::Test(); // statik method çağırma şekli
echo Deneme::$a; // statik değişken çağırma şekli
class Deneme { public static $a = 5; public static function Test() { echo “Test Methodu Yazıdırıldı”; } }
// Çağırma Şekli Deneme::Test(); // statik method çağırma şekli echo Deneme::$a; // statik değişken çağırma şekli |
Üstteki örneğe bakacak olursak static anahtar kelimesi ile bir method ve değişken tanımladık. Sınıfın bitişinde de SınıfAdı::MethodAdı, SınıfAdı::$DegiskenAdı şeklinde statik methodu ve değişkeni çağırdık.
Method veya değişken statik olmasaydı bu şekilde çağırdığımızda hata alacaktık.
Statik Değişken ve Norma Değişkenin Farkı
Statik ve normal değişkenin normal kullanılırken farkı yoktur ama bir fonksiyon veya method içerisinde kullanılırken aralarında çok önemli bir fark vardır.
Bir fonksiyonun içerisinde bir statik değişken tanımlarsak bu değişken ramde bir kere oluşturulur ve değeri sürekli güncellenir. Normal değişkenler böyle değildir.
Yani kısaca statik bir değişkeni bir kere tanımlayıp sadece değerini güncelliyoruz diyebiliriz.
Statik ve normal olan iki fonksiyonu çalıştırıp aralarındaki farkı görürsek daha iyi anlaşılacaktır.
function StaticEkle($b) {
static $a = “Vehbi”;
$a.=” “.$b;
echo “$a
“;
}
function NormalEkle($b) {
$a = “Vehbi”;
$a.=” “.$b;
echo “$a
“;
}
echo ”
NormalEkle Fonksiyonu Çalışıyor.
“;
NormalEkle(“Akdoğan”);
NormalEkle(“Erzurum”);
NormalEkle(“01.01.1995″);
echo ”
StaticEkle Fonksiyonu Çalışıyor.
“;
StaticEkle(“Akdoğan”);
StaticEkle(“Erzurum”);
StaticEkle(“01.01.1995”);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
function StaticEkle($b) { static $a = “Vehbi”; $a.=” “.$b; echo “$a } function NormalEkle($b) { $a = “Vehbi”; $a.=” “.$b; echo “$a }
echo ” NormalEkle Fonksiyonu Çalışıyor.“; NormalEkle(“Akdoğan”); NormalEkle(“Erzurum”); NormalEkle(“01.01.1995”);
echo ” StaticEkle Fonksiyonu Çalışıyor.“; StaticEkle(“Akdoğan”); StaticEkle(“Erzurum”); StaticEkle(“01.01.1995”); |
Kodu çalıştırdığımızda aşağıdaki gibi bir ekran görüntüsü alırız.
StaticEkle fonksiyonumuz her çalıştığında static $a=”Vehbi”; kodu çalışsada daha önceden $a adında bir statik değişken mevcut olduğu için değişkenin içeriği değiştirilmiyor.
Peki ne işimize yarayacak bu kod derseniz hemen güzel bir örnek yapalım.
Web sitesindeki başlığın Anabaşlık – Kategori – Alt Kategori – İçerik Şeklinde bir başlık oluşturan fonksiyon hazırlayalım.
function BaslikOlusturucu($b) {
static $a = “Mobilhanem”;
$a.=” – “.$b;
echo “$a
“;
}
BaslikOlusturucu(“PHP Eğitimleri”); // kategori sayfası için çalışan kod
BaslikOlusturucu(“PHP OOP”); // alt kategori sayfasında çalışan kod
BaslikOlusturucu(“Statik Method ve Değişkenler”); // içerik sayfasında çalışan kod
function BaslikOlusturucu($b) { static $a = “Mobilhanem”; $a.=” – “.$b; echo “$a }
BaslikOlusturucu(“PHP Eğitimleri”); // kategori sayfası için çalışan kod BaslikOlusturucu(“PHP OOP”); // alt kategori sayfasında çalışan kod BaslikOlusturucu(“Statik Method ve Değişkenler”); // içerik sayfasında çalışan kod |
Fonksiyonu 3 adet çağırdık. Birinci fonksiyonu kategori.php sayfasında, ikinci fonksiyonu alt_kategori.php sayfasında, üçüncü fonksiyonu ise icerik.php sayfasında çalıştırırsak icerik.php ye erişen arkadaş 3 fonksiyonuda çalıştırıp aşağıdaki şekilde çıktı almış olur.
Mobilhanem – PHP Eğitimleri – PHP OOP – Statik Method ve Değişkenler
Bir dersimizin daha sonuna geldik. Bir sonraki dersimizde görüşmek üzere
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm php dersleri için tıklayınız..
3