Kodaman’daki 2. yazıma hoşgeldiniz. Bu yazımda sizlere PHP class yapılarını açıklamaya çalışacağım.Başlamadan önce size Object Oriented için düşündüklerimi açıklamak istiyorum :
Object Oriented dillerin en önemli özelliği class yapılarını esnek kullandırtmalarıdır. Object Oriented dillerde her şey “ojbect” nesnesinden türemedir. Bu object nesneside aslında bir classtır. Yani Object Oriented = Class yapılarını kullanmaktır.

Not : Object Oriented’ın içerisine asla derinleme dalmadım. Fakat yüzeysel olarak bu şekilde biliyorum. Yanlış biliyorsam lütfen fazla üzerime gelmeden yorumunuzu ekleyiniz.

Şimdi gelelim bunu neden anlattığıma. OOP( Object Oriented Programming ) dediğimiz olay bizim yapacağımız işle birebir bağlıdır. Bunun için class yapılarını öğrendiğinizde aslında OOP’yede giriş yapmış olacaksınız.
Konumuza başlıyoruz :
Ben tasarım programı olarak Adobe Dreamweaver CS4‘ü kullanıyorum. Programdan yeni bir php dosyası açıyorum ve içerisindeki tüm kodları silerek içerisine php taglarımı ekliyorum : Classımızı tanımlıyoruz :class MerhabaDunya {} Classımızı oluşturduk. Şimdi yapısını düşünelim :MerhabaDunya sınıfımız Dışarıdan dosya okuma ve yazma işlemleri yapsın. Sınıfımız istenilen dosyayı açsın, okusun ve hafızaya alsın, daha sonra hafızaya alınan veriyi istediğimiz gibi değiştirip daha sonra yazacağımız bir metodla istediğimiz yere kaydetsin.Buna göre sınıfımızın adını DosyaIslemleri şeklinde değiştiriyoruz :class DosyaIslemleri {} Şimdi içerisine elemanları yazacağız. Elemanları yazarken verebileceğimiz önekler:* public* private* protected* staticGerekebilecek elemanlarımızı sınıfımıza ekleyelim :class DosyaIslemleri {public $dosya_yolu = ” “; // Dosya yolumuzu burda tutacağız.private $hafiza = ” “; // Okunan dosyanın içeriği burada tutulacak.static $son_kayit_yolu = ” “; // Son kaydımızın yolunu burda tutacağız.} Gelelim sınıfımız çağarıldığında yapmamız gereken işlemlerin olacağı kurucu metodumuzu yazmaya :class DosyaIslemleri {public $dosya_yolu = ” “;private $hafiza = ” “;static $son_kayit_yolu = ” “;function __construct($dosya_yolu) { // veya function DosyaIslemleri($dosya_yolu)}} Kurucu metodumuzu yazdık. Sıra geldi dosyayı hafızaya almaya.function __construct($dosya_yolu) {if( file_exists(realpath($dosya_yolu)) ){$this->dosya_yolu = realpath($dosya_yolu); // Sınıfımızdaki dosya yolunu gelen dosyanın gerçek yoluna eşitledik.$dosya = fopen($this->dosya_yolu, “r”); // Dosyayı sadece okumak için açtık.$this->hafiza = fread( $dosya, filesize( $this->dosya_yolu ) ); // Hafızaya aldık.fclose( $dosya ); // Dosyayı Kapat}else{die(“Dosya bulunamadı.”); // Dosya yoksa}} Artık $hafiza değişkenimizin içerisinde okunan dosyadaki veriler var. Fakat bunu dışardan çağıramıyoruz. Dışardan çağarabilmemiz için sınıf içerisinden çağarıp değerini geriye döndürmemiz gerekiyor. Gerekli kodu ekleyelim :function HafizayiOku(){return $this->hafiza; // Hafızadaki içeriği geriye döndür.} Artık hafızayıda okuyabiliyoruz. Fakat bu hafızada değişiklik yapmak istiyor canımız. Örneğin $hafizadaki bilgiyi ters çevirip kaydettirelim.$hafiza’daki veriyi değiştirme işlemini HafizaDegistir adlı bir fonksiyonla yapalım. $value adında bir parametre atayalım ve ona verilen değeri hafizanın içine atalım.Hemen değiştirmek için gerekli fonksiyonumuzu ekleyelim :function HafizaDegistir( $value ){$this->hafiza = $value;} Bunu da eklediğimize göre artık hafızadaki veriyi ters çevirme zamanı geldi demektir 🙂 Bunun için statik bir fonksiyon kullanıyorum. Çağarılışına işlemi yaparken dikkat edin.static function TersCevir( $value ){$donecek = “”;for( $x=strlen($value); $x>0; $x– ){$donecek .= substr($value,$x-1,1);}return $donecek;} Sınıfımızı tamamlamamız için son kalan, dosyayı istediğimiz yere kaydetmek. Bunun için de gerekli fonksiyonumuz aşağıda :function Kaydet($dosya_ismi) // $php’nin olduğu sayfa içerisine kaydeder.{$dosya = fopen($dosya_ismi,”w”); // dosyayı yazmak için açar. Eğer dosya yoksa, oluşturur.fwrite($dosya,$this->hafiza); // Dosyaya yazar.fclose($dosya); // Dosyayı kapat.self::$son_kayit_yolu = realpath($dosya_ismi); // Statik olan $son_kayit_yolu değişkenimize dosyanın kaydedildiği tam yolu kaydettik.} Bu fonksiyon sayesinde de dosyamızı kaydedebiliriz.Artık sınıfımız hazır olduğuna göre include edip istediğimiz yerde kullanması kaldı : Sınıfımız :dosya_yolu = realpath($dosya_yolu);$dosya = fopen($this->dosya_yolu, “r”);$this->hafiza = fread( $dosya, filesize( $this->dosya_yolu ) );fclose( $dosya );}else{die(“Dosya bulunamadı.”);}}function hafiza(){return $this->hafiza;}function HafizaDegistir( $value ){$this->hafiza = $value;}function Kaydet($dosya_ismi){$dosya = fopen($dosya_ismi,”w”);fwrite($dosya,$this->hafiza);fclose($dosya);self::$son_kayit_yolu = realpath($dosya_ismi);}static function TersCevir( $value ){$donecek = “”;for( $x=strlen($value); $x>0; $x– ){$donecek .= substr($value,$x-1,1);}return $donecek;}} Sıra geldi deneme sayfamızı hazırlamaya :include(“DosyaIslemleri.class.php”);$di = new DosyaIslemleri( “dosyam.txt” );$hafiza = $di->hafiza();$hafiza = DosyaIslemleri::TersCevir($hafiza);$di->HafizaDegistir( $hafiza );$di->Kaydet(“sonuc.txt”);echo( DosyaIslemleri::$son_kayit_yolu ); dosyam.txt123456789
Denediğinizde sizde göreceksiniz ki dosyam.txtdeki 123456789 sonuc.txtye 987654321 şeklinde kaydedilecektir.Bir dahaki dökümanda görüşmek üzere arkadaşlar. Umarım yararlı bir döküman olmuştur.En detaylı bilgili PHP’nin kendi dökümanlarında bulabilirsiniz: PHP Dökümanları ( Türkçesi vardır. )Sorularınızı ve eleştrilerinizi yorum olarak yazarsanız değerlendiririz.Sevgilerimle…Oğuz Özcan