Sorun: AppServ mCrypt modülü php.ini dosyasından aktif edilse dahi çalışmayabiliyor. Peki bunun çözümü nedir?
Çözüm: AppServ kurulu olduğu klasöre gelip, php5 klasöründen libmcrypt.dll dosyasını kopyalayıp Apache2.2\bin klasörüne yapıştırın. Sonra Apache servisini yeniden başlatın. Sorununuz çözülecektir.
Bir sınıfı türettirmeden önce __autoload($sinif_isim) fonksiyonu tetiklenir. Bu yöntem her defasında sınıfın olduğu sayfayı entegre etmememizi sağlar. Yani otomatik olarak dahil edilir.
class klasöründe cls.ogr.php dosyasında ogr isminde sınıfımız olsun.
PHP
1
2
3
4
5
6
7
8
//dizin: /class/cls.ogr.php
classogr
{
publicfunction__construct()
{
echo'ogr sınıfı türetildi...<br />';
}
}
PHP
1
2
//dizin: /index.php
$ogr=newogr();
Bu şekilde ogr sınıfını türettirdiğimiz zaman hata meydana gelir. Çünkü sınıfımız class/cls.ogr.php içinde olduğu için. Onu sayfaya dahil etmemiz gerekir. Bu işlemleri include, include_once, require, require_once komutlarıyla sayfayı dahil ederiz. Ama biz burada __autoload metodunu kullanacağız.
PHP
1
2
3
4
5
6
7
8
//dizin: /index.php
function__autoload($sinif_isim)
{
echo'cls.'.$sinif_isim.'.php sayfası dahil ediliyor...<br />';
require_once'class/cls.'.$sinif_isim.'.php';
}
$ogr=newogr();
ogr sınıfı türetilmeden önce __autoload metodu çalışır. require_once ‘class/cls.ogr.php’ dosyasını dahil eder. Sonra ogr sınıfı türetilir.
Sınıf türetilirken hata meydana gelebilir. Hatayı yakalamak için try catch bloklarını kullanabiliriz. Bu özellik PHP 5.3.0 dan beri vardır. Önceki sürümlerde çalışmaz.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//dizin: /index.php
function__autoload($sinif_isim)
{
echo"cls.$sinif_isim.php sayfası dahil ediliyor...<br />";
if(file_exists("class/cls.$sinif_isim.php"))
require_once"class/cls.$sinif_isim.php";
else
thrownewException("cls.$sinif_isim.php isminde bir dosya bulunamadı.");
}
try
{
$ogr=newogr1();
}
catch(Exception$e)
{
echo$e->getMessage();
}
ogr1 sınıfı olmadığı için catch bloğu çalıştırılacaktır.
Hayırlı günler, sağlıcakla kalın.
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.
__call()
Tanımlanmayan bir metod çağırıldığı zaman tetiklenir. İki parametre alır. Çağırılan metod ismi ve metoda gönderilen parametre-ler.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
classogr
{
public$ad;
publicfunction__call($f_isim,$parametreler)
{
echo$f_isim." isimli bir metod tanımlı değildir. ".implode(', ',$parametreler)." değer-ler atanamaz.";
}
}
$ogr=newogr();
$ogr->adgetir("paramdeger");
//Ekran çıktısı: adgetir isimli bir metod tanımlı değildir. paramdeger değer-ler atanamaz.
__callStatic()
PHP 5.3.0 sürümünde eklenmiştir. Tanımlı olmayan bir static metodu çağırdığımızda tetiklenir. Parametre olarak çağırılan metod ismi ve parametre-leri alır.
PHP
1
2
3
4
5
6
7
8
9
10
11
classogr
{
public$ad;
publicfunction__callStatic($f_isim,$parametreler)
{
echo"static".$f_isim." isimli bir metod tanımlı değildir. ".implode(', ',$parametreler)." değer-ler atanamaz.";
}
}
$ogr=newogr();
ogr::adgetir("paramdeger");
__get($degiskenisim)
Bir değişkeni çağırdığınızda o değişken sınıfta yoksa __get($degiskenisim) metodu tetiklenir. Parametre olarak değişken ismini verir.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
classogr
{
public$ad;
publicfunction__get($d_isim)
{
echo$d_isim." isimli değişken tanımlı değildir.";
}
}
$ogr=newogr();
echo$ogr->ad1;
//Ekran çıktısı: ad1 isimli değişken tanımlı değildir.
ad1 değişkeni ogr sınıfında tanımlı olmadığı için __get metodu tetiklenir.
__set($degiskenisim, $degiskendeger)
Tanımlı olmayan bir değişkene değer atanmaya çalışıldığında tetiklenir. Parametre olarak iki tane parametre alır. Değişken ismi ve değişken değer.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
classogr
{
public$ad;
publicfunction__set($d_isim,$d_deger)
{
echo$d_isim." isimli değişken tanımlı değildir. ".$d_deger." değerini atayamazsınız.";
}
}
$ogr=newogr();
$ogr->ad1="Veli";
//Ekran çıktısı: ad1 isimli değişken tanımlı değildir. Veli değerini atayamazsınız.
ad1 degişkeni tanımlı olmadığı ve değer atamaya çalıştığımız zaman __set metodu tetiklenir.
__invoke()
Bu özellik PHP 5.3.0’dan beri eklenmiştir. Sınıfa bir parametre gönderdiğimiz zaman tetiklenir. Kullanımı şu şekildedir.
PHP
1
2
3
4
5
6
7
8
9
10
11
classogr
{
public$ad;
publicfunction__invoke($param)
{
echoimplode(", ",$param)." parametre-ler gönderilmiş bir __invoke() metoduyum.";
}
}
$ogr=newogr();
$ogr("param-deger");
__tostring()
Sınıf ekrana çıktılandığında çalışır. Yani türettiğimiz bir sınıfa echo, print uygularsak __tostring() metodu tetiklenir. Geriye yazılacak bir nesne göndermelidir.
PHP’de sınıf (class) tanımlaması şu şekilde yapılır:
PHP
1
2
3
4
classisim
{
}
Oluşturduğumuz sınıfı kullanabilmemiz için onun görüntüsünü (instance) oluşturmamız gerekir. Görüntüsünü oluşturmak için new kodunu kullanırız.
PHP
1
$degisken=newisim();
$değisken adındaki bir değişkene (variable) sınıfımızın görüntüsü atadık.
Sınıfımızda değişken tanımlamak istersek eğer bir erişim sağlayıcısıyla (public, private, protected) beraber yazmamız gerekir. Yoksa PHP’de hata meydana gelir.
PHP
1
2
3
4
classisim
{
public$degisken;
}
Fonksiyon (Function)
PHP’de fonksiyonlar (function) iki türlüdür. Geriye değer döndüren veya döndürmeyen.
Eğer geriye değer döndüreceksek return komutunu kullanırız.
PHP
1
2
3
4
5
functionfonkisim
{
//Kodlar
return"değer";
}
Fonksiyonun alt program olarak kullanımı:
PHP
1
2
3
4
functionfonkisim
{
echo"Bu bir Alt programdır.";
}
Bir fonksiyona dışarıdan parametre yollarak kullanılması:
PHP
1
2
3
4
functionfonkisim($param)
{
//Kodlar
}
Bir fonksiyondan sınıfımıza ait bir değişkene veya metoda erişmemiz için $this kodunu kullanırız.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
classisim
{
public$degisken;
functiondegiskendegerata($deger)
{
$this->degisken=$deger;
}
}
$isim=newisim();
$isim->degiskendegerata("deger");
Yapıcı (__construct) Metod
Sınıf türetildiği zaman ilk tetiklenecek metoddur. Geriye değer döndüremez.
PHP
1
2
3
4
5
6
7
classisim
{
function__construct()
{
echo"Ben ilk çalışan metodum...";
}
}
Yıkıcı (__destruct) Metod
Sınıf türetildikten sonra, en son tetiklenir. Sınıf kapatılırken yok edildiği anda çalışan metoddur. Sınıfta Exit() metoduyla sonlarılsa dahi bu metod çalışır.
PHP
1
2
3
4
5
6
7
classisim
{
function__destruct()
{
echoget_class($this)." sınıfı yokediliyor...";
}
}
static Anahtar Sözcüğü
static olarak tanımlanmış, sınıf özelliklerine veya yöntemlerine türettirmeden ulaşabiliriz. Normal olarak türetilmiş bir sınıftan static olan nesneye erişilemez. isim::$staticnesneisim olarak erişilebilir. Sınıfta oluşturulmuş bir static nesneye sınıftan self::$staticnesneisim olarak erişilir.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
classisim
{
publicstatic$degisken;
function__construct()
{
self::$degisken="deger";
}
}
$isim=newisim();
echoisim::$degisken;
Hayırlı günler, sağlıcakla kalın.
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.