Php ile Nesnel Programlama – 1

Tarih: Şubat 24th, 2009 | Yazar: | Kategori: Php | Etiketler: , , , , , , , , | 13 Yorum »

Merhaba arkadaşlar. Bundan sonra programlamanın en önemli konularından olan OOP yani Nesne Tabanlı Programlama konusuna gireceğiz. Eğer ki profesyonel bir programcı olmak istiyorsanız az satır yazmalısınız. Az satır yazmak için de nesnel programlama hakkında bilgilerinizin olması şart…

Arkadaşlar derslerimizi aynı blog sistemini gibi işleyeceğiz. Yani birlikte bir sınıf geliştireceğiz. Benim aklıma ilk önce Mysql sınıfları geldi ve bizde bir tane yapalım dedim. Sonuçta az trafik çok iş mantığı ile çalışacağız. İnanıyorum ki bu dersin sonunda nesnel programlama üzerine yeteri kadar bilgileriniz olacaktır…

Arkadaşlar öncelikle birkaç prensibi bilmek şart. Şimdi kesinlikle normal kodlarınız ile yarattığınız sınıfları aynı yerde bulundurmayın. Normalde As3 de sınıf yazsak bu daha da karmaşık bir durum olurdu. Fakat Php de bazı şeyler daha kolay. Mesela veri türleri gibi bir sorunumuz yok. Mesela hemen bir sınıf yaratalım;

<?php
class mysql_islem {
}
?>

Gördüğünüz gibi mysql_islem isimli bir sınıf yarattık. Buraya kadar hiçbir problem yok. Zaten asıl olayda bundan sonra başlıyor. Arkadaşlar sınıflarda istersek genel değişkenler tanımlayabiliriz. Aslında burada genelin ne anlamada olduğunu öğrenmeniz için class ların nasıl kullanıldığını da bilmelisiniz. Sınıfların içerisinde birçok fonksiyonlar bulunur. Bizim verdiğimiz verilere göre bu fonksiyonlar işlemler yaparlar. Mesela en basitinden sınıfımızı bir test edelim;

<?php
class mysql_islem {
function bilgiler($bilgi1,$bilgi2) {
echo $bilgi1;
}
}
?>

Normalde bu kod $bilgi1 isimindeki değişkeni yazdıracaktır. Fakat bu kodlar tek başına bir işe yaramaz. O yüzden bu kodları sinif.php adında kayıt edin. Sonra index.php diye bir dosya açıp içerisine şu kodları ekleyin;

<?php
include sinif.php;
$islem = new mysql_islem();
$islem -> bilgiler("deneme1","deneme2");
?>

İşte bu kodlar ekrana “deneme1″ yazdıracaktır. Şimdi burada neler yaptık? Öncelikle sınıfımızı dahil ettik. Ardından $islem adında bir değişken yarattık. Sonra dedik ki bu değişken veri döndürmeyecek fakat bir sınıfın elemanı olacak. Yani bir tür elçi ayarladık. Ardından mysql_islem isimli sınıfın altında bulunan bilgiler isimli sınıfa ulaştık. Sınıfın bir altındaki fonksiyona ulaşmak için -> kullanıyoruz. Yani elçiye yön belirttik ve fonksiyonun verileri aynen sırasıyla yerleştirdik… Buraya kadar herşey tamamsa;

Arkadaşlar Mysql sınıfı yapacağız demiştik. O zaman kodlarımız aynen şu şekilde olmak zorunda;

<?php
class mysql_islem {
function mysql_baglan($host_adresi,$kul_ad,$sifre,$db_adi) {
@$baglan=mysql_connect($hostadresi,$kul_ad,$sifre) or die ("Mysql");
@mysql_select_db($db_adi,$baglan) or die ("Db");
}
}
?>

Gördüğünüz gibi sınıfımızın altında Mysql e bağlanma kodları var. Yukarıdan da verileri alıyor. Demek ki index.php de bu kodlar olacak;

<?php
include sinif.php;
$islem = new mysql_islem();
$islem -> mysql_baglan("localhost","root","","class");
?>

Eğer ki veritabanı verilerini tam verirseniz fonksiyon birşey yazdırmayacaktır. Demek ki bağlantı sağlanmış durumda. Gördüğünüz gibi tek seferde çok az daha satırla veritabanına bağlantı sağladık. Peki direkt olarak veri vermek istersek? Demek istediğim new mysql_islem(“veriler”); şeklinde yapmak istersek? İşte o zaman ilk çalıştırmak istediğimiz fonksiyonu, sınıfımıza bağlıyoruz;

<?php
class mysql_islem {
function mysql_islem($host_adresi,$kul_ad,$sifre,$db_adi) {
@$baglan=mysql_connect($hostadresi,$kul_ad,$sifre) or die ("Mysql");
@mysql_select_db($db_adi,$baglan) or die ("Db");
}
}
?>

O zaman $islem = new mysql_islem(“localhost”,”root”,”",”class”); dediğimizde direkt veritabanına bağlanacaktır. İşte buraya kadar herşey basitti. Hepsini anladıysanız; Arkadaşlar işte genel veri tanımlaması burada işe yaracaktır. Diyelim ki iki adet fonksiyonumuz var. İlkini sınıfa bağladık ve direkt işleme geçirttik. Peki ikisini birden nasıl sağlayabiliriz? Normalde bir fonksiyona verdiğimiz veri diğerisinde işe yaramaz çünkü tanıyamaz. İşte genel veri tanımlarsak bir fonksiyona atanan veriyi tüm sınıf içerisinde kullanabiliriz;

<?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;
}
}
?>

Gördüğünüz gibi en başta bir değişken tanımlıyoruz. Sonra ilk fonksiyondaki $host_adresini bu değişkene eşitliyoruz. Burada $this yani o yani genel değişkeninin yönünü $host_adresi olarak ayarlıyoruz ki ondaki verilerin tamamı genel değişkene geçsin. Sonra tekrar this diyerek ondan verileri alıyoruz ve ekrana yazdırıyoruz.

Şimdilik bu kadar. Diğer dersimizde hem sınıfımızı geliştiricez hemde yeni yeni tanımlamalar öğreneceğiz. Şimdilik herkese iyi günler, iyi çalışmalar…




Benzer Yazılar;

coded by nessus

“Php ile Nesnel Programlama – 1” yazısında 13 Ahkam var.

  1. 1 yakuter 00:54 on Şubat 25th, 2009 anında kesmiş:

    Gayet güzel bir makale. Doğru bir noktaya değinmişsin. Belki örnek daha farklı olabilirdi. Daha sade bir şey. Örneğin bir toplama işlemi. Çünkü olaya veritabanını katınca asıl anlatacağın konu ikinci planda kalmış. Belki de bu nedenle sınıf içindeki globallere ve kurucu fonksiyona göstermen gereken özeni veritabanı işlemine vermişsin ;)

    Öyle ya da böyle, ellerine sağlık ;)

  2. 2 EeTr 18:34 on Şubat 25th, 2009 anında kesmiş:

    Teşekkürler hocam. Bende ilk öğrenirken toplama işlemleri ile öğrenmiştim keşke öyle anlatsaydım ama yazıyı yazarken aklıma birşeyler yapalımda işe yarasın fikri geldi ondan mysql kullandım. Fakat birçok kişi hiçbir problem yaşamadan konuyu kavramış. İkincisini istiyorlar ve yolda… :)

  3. 3 DNN 13:13 on Mart 4th, 2009 anında kesmiş:

    Nesnel ismi hiç uymamış
    Nesnel kelimesi ile adlandırılmıyor bu sistem.
    Nesneye yönelik php programlama denir buna
    Orjinal içerik farklı içerik olacak diye yanlış bilgilendirme yapmakta çok saçma
    Sözlüğe bakarsan nesnel tamamıyla farklı anlamda bir kelimedir…

  4. 4 EeTr 18:34 on Mart 4th, 2009 anında kesmiş:

    Bilgilendirmeniz için teşekkürler hocam. Kısa bir başlık seçmek istedim ondan nesnel dedim. Yoksa sizinde dediğiniz gibi nesne tabanlı programlama veya nesneye yönelik programlama olması gerek.

  5. 5 DNN 09:34 on Mart 11th, 2009 anında kesmiş:

    Tşkler bu iyi niyetli cevabın için ;)
    Sadece ilk kez nesneye yönelik programlama öğrenecek kişiler olursa yanılgıya düşmesinler diye dedim
    Paylaşımın ve derslerin için tşkler ;)

  6. 6 EeTr 18:34 on Mart 11th, 2009 anında kesmiş:

    Burada bir bilgi sunana her zaman iyi niyetliyimdir hocam. Ufak tefek şeylere alınmam. Dediklerinize de aynen katılıyorum. En azından başlarken bir problem olmasın.
    İyi günler, iyi çalışmalar…

  7. 7 Koray 00:39 on Temmuz 16th, 2009 anında kesmiş:

    şu sıralar öğrenmek istediğim tek şey şu sınıf yapısı, internette ise Türkçe kaynak yok, olsa bile buradaki gibi karmaşık, yani şöyle kısa ve öz kodlar ile anlatsan anlarımda arkadaşların dediği gibi, burada sadece mysql anlatılmış, mesela this-> nedir, function($degisken1,$degisken2) ler var, buraları anlayamıyorum işte, bazı fonksiyonlardada sadece fonksiyon var yukarıdaki gibi değişken yok, yani şöyle meyvalar olan, elma armut erik gibi, sınıfları bu şekilde anlatsanız bence daha anlaşılır olur.

  8. 8 Ertuğrul Erkan 15:58 on Eylül 10th, 2009 anında kesmiş:

    @Koray;

    Şu anda görsel derslerimiz başlamış durumda. Onları izleyebilirsin. Çok daha anlaşılır olur..

  9. 9 Emre Gökşin 11:12 on Ekim 26th, 2009 anında kesmiş:

    Gerçekten Güzel bir makale. TEBRİKLER!!!

  10. 10 bakıl 12:53 on Aralık 14th, 2009 anında kesmiş:

    bence her şey mükemmel bunu beceremeyenlerde var örnegin ben??:) saol herşey için ellerine saglık::.)

  11. 11 dummy 16:37 on Aralık 16th, 2009 anında kesmiş:

    new mysql_islem(”veriler”) gibi bir nesne oluşturmak için php __construct() fonksiyonunu sunmuştur, bunu yazmanız daha dogru olurdu.
    Ayrıca var ifadesi yerini public access modifier’a bırakmıştır.
    Son olarak include file.php gibi bir kullanım yoktur hata verir.
    include(‘file.php’) olacaktır, biraz daha dikkatli olmanızı öneririm

  12. 12 Haci 23:46 on Mart 29th, 2011 anında kesmiş:

    Harika bir yazı dizisi tebrik ederim bu derslerin daha da çoğalmasını isterim 4 5 6 diyerek dahada ileri seviyelere kadar ilerlerse bence daha mantıklı olur bir yerden sonra yarım kalan yazıların üstüne farklı kaynaklar hem kafa karıştırıcı olmakta hemde hevesle başlayan kişilerin hevesinin kaçmasıyla son bulmakta (:

    Harika Bir paylaşım teşekkürler….

  13. 13 Kohana ya başlamadan önce php ile nesne yönelimli programlama | Kohana Türkiye 21:49 on Aralık 5th, 2011 anında kesmiş:

    [...] Php ile Nesnel Programlama – 1 [...]


Ahkam Kesme Aparatı

  • *