Php ile Nesnel Programlama – 2
Tarih: Şubat 26th, 2009 | Yazar: Ertuğrul Erkan | Kategori: Php | Etiketler: nesne tabanlı programlama, nesnel programlama, oop, Php, php derslerim, php ile fonksiyon, php ile nesne, php ile nesne tabanlı programlama, php oop | 2 Yorum »Merhaba arkadaşlar. Dün başlayan yazı dizimiz hakkında gerçektende çok olumlu geri dönüşler aldım. Özellikle nesnel programlama nedir, class nedir, fonksiyonları nasıl toparlarız gibi soruların hepsi cevap bulmuş. Ee tabi ki hoşuma gitti. Bugün yine sınıflarda kullanılan güvenlik amaçlı yaratılmış veri tanımlamalarını işleyeceğiz.
Hızlı bir giriş olmasına rağmen yine de birçok kişi sınıfların mantığını kavramış. Ayrıca Mysql sınıfımızı da beğenmişler. Abartmaya gerek yok aslında çünkü sadece veritabanına bağladık. Fakat bugün veritabanına veri gireceğiz. Ve aynen dediğim gibi daha da güvenli bir şekilde olacak…
Tekrar merhaba arkadaşlar. Hatırlarsanız dün en son burada kalmıştık;
<?php class mysql_islem {
var $alinan_host_adresi;
function mysql_islem($host_adresi,$kul_ad,$sifre,$db_adi) {
$this->alinan_host_adresi = $host_adresi;
@$baglan=mysql_connect($hostadresi,$kul_ad,$sifre) or die ("Mysql");
@mysql_select_db($db_adi,$baglan) or die ("Db");
}
function yazdir() {
echo $this->alinan_host_adresi;
}
}
?>
Şimdi bu kod tek başına şu şekilde veriler verirsek (index.php);
<?php
require "sinif.php";
$mysql_islemler = new mysql_islem("localhost","root","","class");
$mysql_islemler -> yazdir();
?>
Hem mysql e bağlanacak hem de ekrana localhost yazdıracaktır. Burada global değişkenler yani genel bir değişken sayesinde tüm class içerisinde veriyi kullanabiliyoruz. Peki bir hacker shell denilen bir sistemi hostumuza attı ve önceden belirlediğimiz bir veriyi yazdırdı. İşte O zaman ne yapacağız? Bunun içinde değişken ve fonksiyon tipleri var.
Her değişken temel de public yani paylaşılabilir olarak tanımlanır. Biz değişkenleri var olarak tanımlarken okuyucular var ı public şeklinde değiştirirler. İşte sırf bu yüzden public i tekrar yazmamıza gerek yok. Fakat protected veya private dememiz gerekirse belirtiyoruz. Protected demek o değişkenin sadece bulunduğu sınıf ve o sınıfın dahilindeki sınıflarda kullanılabileceğini belirtir. Yani dışarından ulaşılamaz. Eğer ki private dersek sadece bulunduğu sınıf içerisinde kullanılır. Bu sayede geniş ölçekli bir koruma elde edilmiş olur. Mesela bu kod;
<?php
class mysql_islem {
var $alinan_host_adresi;
protected $alinan_kul_ad;
private $sifre;
function mysql_islem($host_adresi,$kul_ad,$sifre,$db_adi) {
$this->alinan_host_adresi = $host_adresi;
$this->alinan_kul_ad = $kul_ad;
$this->sifre = $sifre;
@$baglan=mysql_connect($hostadresi,$kul_ad,$sifre) or die ("Mysql");
@mysql_select_db($db_adi,$baglan) or die ("Db");
}
function yazdir() {
echo $this->alinan_host_adresi;
echo $this->alinan_kul_ad;
echo $this->sifre;
}
}
?>
Yukarıda verdiğim kod index.php de şu şekilde çalıştırıldığında;
<?php
require "sinif.php";
$mysql_islemler = new mysql_islem("localhost","root","","class");
echo $mysql_islemler -> alinan_sifre;
echo $mysql_islemler -> alinan_kul_ad;
?>
Aynen şu hataları verir;
Fatal error: Cannot access private property mysql_islem::$alinan_sifre in C:\AppServ\www\class\index2.php on line 4
Fatal error: Cannot access protected property mysql_islem::$alinan_kul_ad in C:\AppServ\www\class\index2.php on line 5
Çünkü onlar sadece sınıflar içerisinde kullanılabilir. İşte buraya kadar değişkenlerde güvenlik olayları geçtik. Şimdi fonksiyonlara bakalım. Şimdi arkadaşlar index.php mize şu kodları eklediğimizde;
<?php
require "sinif.php";
$mysql_islemler = new mysql_islem("localhost","root","","class");
$mysql_islemler -> yazdir();
?>
Ekrana tamamen güvenliksiz olarak; localhostroot(boşluk) yazdıracaktır. İşte bu gibi durumlar için fonksiyonlara da güvenliksel tanımlamalar atayabiliriz. Her fonksiyon temelde aynı değişkenler gibi public yani paylaşılabilir olarak işlem görür. İstersek sonradan private veya protected atamaları yapabiliriz. Mesela şu kodlar;
<?php class mysql_islem {
var $alinan_host_adresi;
protected $alinan_kul_ad;
private $alinan_sifre;
function mysql_islem($host_adresi,$kul_ad,$sifre,$db_adi) {
$this->alinan_host_adresi = $host_adresi;
$this->alinan_kul_ad = $kul_ad;
$this->alinan_sifre = $sifre;
@$baglan=mysql_connect($hostadresi,$kul_ad,$sifre) or die ("Mysql");
@mysql_select_db($db_adi,$baglan) or die ("Db");
}
private function yazdir() {
echo $this->alinan_host_adresi;
echo $this->alinan_kul_ad;
echo $this->alinan_sifre;
}
}
?>
Aynen yukarıda verdiğim index.php gibi kullanıldığında hata verecektir. Çünkü fonksiyon paylaşıma kapalıdır ve dışarından bilgi alınamaz…
Arkadaşlar şimdilik bu kadar. Diğer derste statik veriler, sınıfların genişletilmesi başlıklarını işleyip tamamen bitireceğiz…
Herkese iyi günler, iyi çalışmalar…
Benzer Yazılar;
- OOP Nerede ve Ne Zaman Gereklidir?
- Fonksiyonlarda Return Komutu ve Kullanımı
- Video Ders: Php ile OOP Programlama Bölüm 1
- Php ile Nesnel Programlama - 3
- Php ile Nesnel Programlama - 1

bu konuyu tam olarak anlayamadım, bir önceki arkadaşın dediği gibi biraz önbilgi verilse daha iyi olur kanaatindeyim.
[...] Php ile Nesnel Programlama – 2 [...]