PHP 8.2'nin Yenilikleri: Sınıf Oluşturma Sözdizimi, Tip İlişkilendirme ve Daha Fazlası

13 Nisan 2023 221 Okuma süresi: 4 dakika

PHP 8.2 sürümü birçok yeni özellik ve geliştirme getiriyor. Bu yazıda, PHP 8.2 ile birlikte gelen en önemli özellikleri ve detaylı kod örnekleri ile açıklayacağım.

1. enum Veri Türü

PHP 8.2, enum adında yeni bir veri türü ekliyor. enum türü, belirli bir sabit değere sahip bir dizi değer tanımlamak için kullanılır. Bu özellik, kod okunabilirliğini arttırmak ve hataları azaltmak için özellikle yararlıdır. Aşağıdaki örnek, enum kullanımını göstermektedir:

enum Fruit {
  case APPLE;
  case BANANA;
  case ORANGE;
}

function getFruitName(Fruit $fruit) {
  switch ($fruit) {
    case Fruit::APPLE:
      return "Apple";
    case Fruit::BANANA:
      return "Banana";
    case Fruit::ORANGE:
      return "Orange";
  }
}

$fruit = Fruit::APPLE;
echo getFruitName($fruit); // output: Apple

2. match İfadesi İyileştirmeleri

match ifadesi, PHP 8.0'da tanıtılmıştı ve çoklu koşullu ifadeler için switch ifadesinin yerine kullanılabilir. PHP 8.2 ile birlikte, match ifadesi iyileştirildi ve birkaç yeni özellik eklenerek daha kullanışlı hale getirildi. Aşağıdaki örnek, match ifadesinin bazı yeni özelliklerini göstermektedir:

$status = "success";
$result = match ($status) {
  "success" => "Operation completed successfully.",
  "error" => "An error occurred."
  default => throw new InvalidArgumentException("Invalid status."),
};
echo $result; // output: Operation completed successfully.

match ifadesinde, artık default anahtar kelimesi kullanarak varsayılan değer belirleyebilirsiniz. Ayrıca, throw ifadesi kullanarak geçersiz bir değer için özel bir hata fırlatabilirsiniz.

3. str_contains() İşlevi İyileştirmeleri

str_contains() işlevi, bir dizgede belirli bir alt dizenin bulunup bulunmadığını kontrol eder. PHP 8.2 ile birlikte, bu işlev artık dizge dizisi olarak da kullanılabilir. Aşağıdaki örnek, str_contains() işlevinin yeni özelliğini göstermektedir:

$fruits = ["apple", "banana", "orange"];

if (str_contains($fruits, "banana")) {
  echo "Found banana in the array!"
} else {
  echo "Did not find banana in the array.";
}

4. Yeni Oluşturucu Sözdizimi

PHP 8.2 ile birlikte, sınıf oluşturucuları için yeni bir sözdizimi tanıtıldı. . Yeni sözdizimi, özellikle sınıf hiyerarşisinde yer alan sınıfların oluşturulması için daha kullanışlıdır. Aşağıdaki örnek, yeni oluşturucu sözdiziminin nasıl kullanıldığını göstermektedir:

class Person {
  public function __construct(
    public string $name,
    public int $age,
    public string $gender,
  ) {}
}

class Student extends Person {
  public function __construct(
    public string $name,
    public int $age,
    public string $gender,
    public string $studentId,
  ) {
    parent::__construct($name, $age, $gender);
  }
}

$student = new Student(
  name: "John Doe",
  age: 25,
  gender: "Male",
  studentId: "S1234",
);

Bu örnekte, Person sınıfında yeni oluşturucu sözdizimi kullanılarak özellikler tanımlandı. Student sınıfında, hem Person sınıfının özellikleri hem de Student sınıfına özgü studentId özelliği tanımlandı. Ayrıca, parent::__construct() kullanılarak üst sınıfın yapıcısı çağrıldı.

5. Öntanımlı Argümanlar İçin Zorunlu Olmayan Parametreler

PHP 8.2 ile birlikte, öntanımlı argümanlar için zorunlu olmayan parametreler tanımlanabilir. Bu özellik, belirli bir parametrenin kullanıcının tarafından geçirilip geçirilmediğini kontrol etmek için kullanılır. Aşağıdaki örnek, öntanımlı argümanlar için zorunlu olmayan parametrelerin kullanımını göstermektedir:

function greet(string $name, string $greeting = "Hello") {
  echo $greeting . " " . $name;
}
greet("John"); // output: Hello John
greet("Jane", "Hi"); // output: Hi Jane

Bu örnekte, greet() işlevinde $greeting parametresi öntanımlı olarak "Hello" olarak tanımlanmıştır. Ancak, kullanıcı belirli bir selamlama ifadesi sağlarsa, o ifade kullanılacaktır.

Bu özellikler, PHP 8.2'nin en önemli özellikleri arasında yer almaktadır. Bu özellikler, PHP kodunun daha temiz, daha okunaklı ve daha işlevsel hale gelmesini sağlayarak geliştiricilere büyük bir kolaylık sağlamaktadır.

Benzer makaleler