İçeriğe geç
← Blog

PHP’de Nesne Yönelimli Programlama (OOP) Temelleri

27 Haziran 2009, 01:11 PHP 4 dk 4.5k 2

PHP’de Nesne Yönelimli Programlama (OOP) Temelleri

Bir süredir PHP ile nesne yönelimli programlama (Object Oriented Programming – OOP) yaklaşımını kullanarak projeler geliştiriyorum. Bu yazı serisinde de OOP’nin temel kavramlarını ve günlük projelerde nasıl kullanılabileceğini örneklerle anlatmaya çalışacağım.

İlk örneğimizde basit bir veritabanı bağlantı sınıfı oluşturacağız. Bu sınıf sayesinde bağlantı bilgilerini tek bir yerde toplayabilir ve veritabanı işlemlerimizi daha düzenli bir şekilde yönetebiliriz.

Aşağıdaki örneği birlikte inceleyelim.

PHP
<?php
//Veri tabani bilgileri aliniyor.
require "database_config.php";

//Veri tabanina baglanti icin kullanacagimiz sinifimiz.
class database
{
    private $host;
    private $user;
    private $pass;
    private $db;

    public $connection;

    public function __construct($host, $user, $pass, $db)
    {
        $this->host = $host;
        $this->user = $user;
        $this->pass = $pass;
        $this->db = $db;
    }

    public function connect()
    {
        try {
            $this->connection = @mysql_connect($this->host, $this->user, $this->pass, $this->db);

            if (!$this->connection) {
                throw new Exception("Database bağlantısı gerçekleştirilemiyor");
            }
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }

    public function select()
    {
        try {
            if (!@mysql_select_db($this->db, $this->connection)) {
                throw new Exception("Veritabanı seçilemedi.");
            }

            mysql_query("SET NAMES 'utf8'");

        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
}

// Veritabanı bilgileri ile sınıfın bir nesnesini oluşturuyoruz.
$databaseObject = new database($host, $user, $pass, $db);

// Veritabanına bağlantıyı gerçekleştiriyoruz.
$databaseObject->connect();

// Çalışacağımız veritabanını seçiyoruz.
$databaseObject->select();

?>

Şimdi kodun önemli noktalarını inceleyelim.

Constructor (__construct) Nedir?

__construct() metodu, bir sınıftan yeni bir nesne oluşturulduğu anda otomatik olarak çalışan özel bir metottur. Başka bir ifadeyle, nesneyi oluşturduğunuz anda bu metodu ayrıca çağırmanıza gerek yoktur.

Constructor’lar genellikle sınıfın ihtiyaç duyduğu başlangıç değerlerini almak ve ilk ayarlarını yapmak için kullanılır.

Bu örnekte veritabanı bağlantısı için gerekli olan sunucu adresi, kullanıcı adı, parola ve veritabanı adı constructor aracılığıyla sınıfa aktarılmaktadır.

public Nedir?

public erişim belirleyicisi ile tanımlanan özelliklere (property) ve metotlara sınıfın dışından erişilebilir.

Bir nesne oluşturduktan sonra public olarak tanımlanmış tüm metotları güvenle çağırabilirsiniz.

Örneğin:

PHP
$databaseObject->connect();
$databaseObject->select();

Bu metotlara erişebilmemizin nedeni public olarak tanımlanmış olmalarıdır.

private Nedir?

private olarak tanımlanan özellikler ve metotlar yalnızca tanımlandıkları sınıf içerisinden kullanılabilir.

Sınıfın dışından bu alanlara doğrudan erişmeye çalışırsanız PHP hata verecektir.

Bu örnekte;

PHP
private $host;
private $user;
private $pass;
private $db;

değişkenleri yalnızca database sınıfı tarafından kullanılabilir. Bu sayede bağlantı bilgileri dışarıdan değiştirilmez ve sınıfın veri bütünlüğü korunmuş olur.

Sonuç

Nesne yönelimli programlama, uygulamalarımızı daha düzenli, okunabilir ve yeniden kullanılabilir hâle getirmemizi sağlar.

Bu örnekte oldukça basit bir veritabanı bağlantı sınıfı oluşturduk. İlerleyen yazılarda kalıtım (Inheritance), çok biçimlilik (Polymorphism), soyut sınıflar (Abstract Classes) ve arayüzler (Interfaces) gibi OOP’nin temel yapı taşlarını da örneklerle inceleyeceğiz.

📝 Arşiv Notu

Bu yazı ilk olarak 2009 yılında hazırlanmıştır. Örneklerde kullanılan mysql_* fonksiyonları günümüz PHP sürümlerinde artık desteklenmemektedir. Modern PHP uygulamalarında PDO veya MySQLi kullanılması önerilir. Bu yazı, nesne yönelimli programlamanın (OOP) temel mantığını anlatmak amacıyla korunmuştur.

2 yorum