PHP 8'de sınıflar (classes), nesne yönelimli programlamanın temel yapı taşlarını oluşturur. Sınıflar, veri (özellikler) ve davranış (metotlar) tanımlamak için kullanılır. Bu yazıda sınıfların nasıl oluşturulacağı, özellikler ve metotlar ile nasıl kullanılacağı hakkında bilgi vereceğim.
1. Sınıf Tanımlama
Bir sınıf tanımlamak için class
anahtar kelimesi kullanılır. Aşağıda basit bir sınıf tanımlama örneği bulunmaktadır:
class Car {
// Özellikler
public $color;
public $model;
// Metot
public
function drive(
) {
return "The car is driving.";
}
}
2. Özellikler
Sınıf içindeki değişkenlere özellik denir. Özellikler genellikle sınıfın durumunu tutar ve erişim belirleyicileri (public
, protected
, private
) ile tanımlanır.
- Public: Her yerden erişilebilir.
- Protected: Sadece sınıf ve alt sınıflar tarafından erişilebilir.
- Private: Sadece sınıf içinde erişilebilir.
Örnek:
class Person {
public $name; // Her yerden erişilebilir
protected $age; // Sadece bu sınıf ve alt sınıflar tarafından erişilebilir
private $ssn; // Sadece bu sınıf içinde erişilebilir
public
function __construct(
$name, $age, $ssn
) {
$this->name = $name;
$this->age = $age;
$this->ssn = $ssn;
}
}
3. Metotlar
Sınıf içindeki fonksiyonlara metot denir. Metotlar, sınıfın özellikleri üzerinde işlem yapar veya belirli bir davranışı tanımlar.
Örnek:
class Calculator {
public
function add(
$a, $b
) {
return $a + $b;
}
public
function subtract(
$a, $b
) {
return $a - $b;
}
}
$calc = new Calculator();
echo $calc->add(5, 3); // 8
echo $calc->subtract(5, 3); // 2
4. Sınıfın Nesnesini Oluşturma
Sınıf tanımlandıktan sonra, bu sınıftan nesne (object) oluşturulabilir. Nesne oluşturmak için new
anahtar kelimesi kullanılır.
Örnek:
$myCar = new Car();
$myCar->color = "red";
$myCar->model = "Toyota";
echo $myCar->drive(); // "The car is driving."
5. Yapıcı ve Yıkıcı Metotlar
Yapıcı Metot (Constructor)
Yapıcı metot, bir sınıfın nesnesi oluşturulduğunda otomatik olarak çağrılır. Genellikle özellikleri başlatmak için kullanılır. PHP’de yapıcı metot __construct()
ile tanımlanır.
Örnek:
class Dog {
public $name;
public
function __construct(
$name
) {
$this->name = $name;
}
public
function bark(
) {
return "Woof! My name is " . $this->name;
}
}
$myDog = new Dog("Buddy");
echo $myDog->bark(); // "Woof! My name is Buddy"
Yıkıcı Metot (Destructor)
Yıkıcı metot, bir nesne yok edildiğinde otomatik olarak çağrılır. Genellikle bellek yönetimi veya kapanış işlemleri için kullanılır. PHP’de yıkıcı metot __destruct()
ile tanımlanır.
Örnek:
class Resource {
public
function __destruct(
) {
echo "Resource is being destroyed.";
}
}
$resource = new Resource();
// $resource nesnesi yok edildiğinde "Resource is being destroyed." mesajı yazdırılacak.
6. Kalıtım
Kalıtım, bir sınıfın başka bir sınıftan özellik ve metotları miras almasına olanak tanır. Bu, kodun yeniden kullanılabilirliğini artırır.
Örnek:
class Animal {
public
function makeSound(
) {
return "Some sound";
}
}
class Cat extends Animal {
public
function makeSound(
) {
return "Meow";
}
}
$myCat = new Cat();
echo $myCat->makeSound(); // "Meow"
7. Statik Özellikler ve Metotlar
Statik özellikler ve metotlar, bir sınıfın nesnesine ihtiyaç duymadan erişilebilen özellikler ve metotlardır. Statik özellikler ve metotlar static
anahtar kelimesi ile tanımlanır.
Örnek:
class Math {
public static
function square(
$number
) {
return $number * $number;
}
}
echo Math::square(4); // 16
8. PHP 8 ile Yeni Özellikler
PHP 8, sınıflarla ilgili bazı yeni özellikler sunar:
- Constructor Property Promotion: Özelliklerin tanımlanmasını ve atanmasını daha kısa hale getirir.
class User {
public
function __construct(
public string $name,
public int $age
) {}
}
$user = new User("Alice", 30);
- Union Types: Bir metot veya özellik birden fazla türde değer alabilir.
function example(
int|string $value
): void {
echo $value;
}
- Attributes: Sınıf ve metotlara meta veriler ekler.
#[Route("/user/{id}")]
class UserController {
// ...
}
Sonuç
PHP 8'de sınıflar, nesne yönelimli programlamanın temel unsurlarıdır. Sınıflar, nesneleri tanımlamak, veri ve davranışları bir arada tutmak için kullanılır. Bu yapı, kodun daha modüler, okunabilir ve bakımını kolaylaştıran bir şekilde organize edilmesine olanak tanır. OOP ile yazılmış kodlar genellikle daha az hata içerir ve esnek bir yapıya sahiptir, bu da modern yazılım geliştirmede önemli bir avantajdır.