PHP 8.5 Yenilikleri: Pipe Operator, Asymmetric Visibility ve PHP 9.0 Yol Haritasi (2026)

01.02.2026 12:40 Haber

PHP geliştiricileri dikkat! PHP 8.5 Kasım 2025'te yayınlandı ve 2026'da çoğu proje bu sürüme geçiyor. Peki PHP 8.5'te neler yeni? PHP 9.0 ne zaman gelecek? Alesta Web olarak bu kapsamlı rehberde (comprehensive guide) tüm yenilikleri, breaking changes'ları ve PHP'nin geleceğini inceliyoruz!

1. PHP 8.5 Yeni Özellikler (PHP 8.5 New Features)

PHP 8.5, PHP 8 serisinin devamı niteliğinde birçok yararlı özellik getiriyor. Alesta Web olarak en önemli yenilikleri sizin için derledik.

1.1 Özet: Tüm Yenilikler (Summary: All New Features)

  • Pipe Operator (|>): Fonksiyonel programlama için yeni operator
  • Asymmetric Visibility v2: Property getter/setter için farklı erişim seviyeleri
  • array_first() ve array_last(): Yeni array helper fonksiyonları
  • Locale-independent floats: Locale bağımsız float parsing
  • CLI Process Title: cli_set_process_title() iyileştirmeleri
  • get_exception_handler(): Mevcut exception handler'ı alma
? Bilgi / Info:

PHP 8.5, Kasım 2025 sonunda yayınlandı (released late November 2025). Bug fix desteği 2027'ye kadar, güvenlik güncellemeleri 2028'e kadar devam edecek. Alesta Web olarak yeni projelerde PHP 8.5 kullanmanızı öneriyoruz.

2. Pipe Operator (|>) - Fonksiyonel Programlama (Functional Programming)

PHP 8.5'in en heyecan verici özelliği Pipe Operator! Unix/Linux pipe'larını düşünün, aynı mantık. Bir fonksiyonun çıktısını diğerine aktarıyorsunuz.

Pipe Operator Kullanımı (Using Pipe Operator)

<?php
// Eski yöntem (Old way) - İç içe fonksiyonlar:
$result = array_sum(
    array_map(
        fn($x) => $x * 2,
        array_filter(
            $numbers,
            fn($x) => $x > 0
        )
    )
);
// Okunması zor (hard to read)!

// Yeni yöntem (New way) - Pipe Operator:
$result = $numbers
    |> array_filter($$, fn($x) => $x > 0)
    |> array_map(fn($x) => $x * 2, $$)
    |> array_sum($$);
// Çok daha okunabilir (much more readable)!

// $$ önceki ifadenin sonucunu temsil eder
// $$ represents the result of the previous expression

Gerçek Dünya Örneği (Real World Example)

<?php
// Kullanıcı verisi işleme (User data processing)
$users = [
    ['name' => 'Ahmet', 'age' => 25, 'active' => true],
    ['name' => 'Mehmet', 'age' => 30, 'active' => false],
    ['name' => 'Ayşe', 'age' => 28, 'active' => true],
];

// Pipe Operator ile temiz kod (Clean code with Pipe Operator):
$activeUserNames = $users
    |> array_filter($$, fn($u) => $u['active'])
    |> array_map(fn($u) => strtoupper($u['name']), $$)
    |> implode(', ', $$);

echo $activeUserNames; // "AHMET, AYŞE"

// Alesta Web ekibi olarak bu özelliği çok sevdik!
✅ Alesta Web Değerlendirmesi / Assessment:

Pipe Operator, PHP'yi fonksiyonel programlama açısından JavaScript ve diğer modern dillere yaklaştırıyor. Collection işlemleri artık çok daha okunabilir (much more readable). alestaweb.com projelerinde kullanmaya başladık.

3. Asymmetric Visibility v2 (Asimetrik Görünürlük)

PHP 8.4'te gelen Asymmetric Visibility, PHP 8.5'te v2 ile iyileştirildi. Artık property'lerin getter ve setter'ları için farklı erişim seviyeleri tanımlayabilirsiniz.

Asymmetric Visibility Kullanımı (Usage)

<?php

class User
{
    // Dışarıdan okunabilir, sadece class içinden yazılabilir
    // Readable from outside, writable only from inside
    public private(set) string $email;

    // Dışarıdan okunabilir, sadece child class'lardan yazılabilir
    // Readable from outside, writable from child classes
    public protected(set) int $loginCount = 0;

    // Constructor promotion ile kullanım:
    public function __construct(
        public private(set) string $name,
        public readonly string $id = null
    ) {
        $this->id = $id ?? uniqid();
    }

    public function incrementLoginCount(): void
    {
        $this->loginCount++; // İçeriden yazılabilir (writable from inside)
    }
}

$user = new User('Ahmet', 'ahmet@alestaweb.com');

echo $user->name;       // ✅ Okunabilir: "Ahmet"
$user->name = 'Mehmet'; // ❌ Error: Cannot modify private(set) property

echo $user->loginCount; // ✅ Okunabilir: 0
$user->incrementLoginCount();
echo $user->loginCount; // ✅ 1

Ne Zaman Kullanmalı? (When to Use?)

  • DTO (Data Transfer Objects): Dışarıdan okunabilir, içeriden değiştirilebilir veriler
  • Immutable-like Objects: Readonly alternatifi ama kontrollü değişiklik imkanı
  • API Responses: Response objelerinde güvenli veri erişimi
? Alesta Web İpucu / Tip:

Asymmetric Visibility, getter/setter boilerplate kodunu ortadan kaldırıyor. Eskiden 10 satır yazılan kod artık 1 satır. Alesta Web olarak temiz kod prensiplerini destekliyoruz.

4. Breaking Changes ve Deprecations

PHP 8.5'e yükseltmeden önce bilmeniz gereken önemli değişiklikler. Alesta Web olarak dikkat etmeniz gereken noktaları listeledik.

4.1 Deprecated Özellikler (Deprecated Features)

PHP 8.5'te Deprecated Olan Özellikler

<?php
// ❌ DEPRECATED: session.use_trans_sid INI ayarı
// URL'lere otomatik session ID ekleme devre dışı bırakılacak
// PHP 9.0'da tamamen kaldırılacak

// ❌ DEPRECATED: SID sabiti (constant)
// echo SID; // Artık deprecated

// ❌ DEPRECATED: Bazı eski date/time fonksiyonları
// strftime() ve gmstrftime() - IntlDateFormatter kullanın

// ✅ Alternatif (Alternative):
$formatter = new IntlDateFormatter(
    'tr_TR',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL
);
echo $formatter->format(new DateTime());

4.2 Davranış Değişiklikleri (Behavior Changes)

Önemli Davranış Değişiklikleri

<?php
// 1. unserialize() hata yönetimi değişti
// Artık exception fırlatıyor, warning değil

try {
    $data = unserialize($malformedString);
} catch (UnserializationFailedException $e) {
    // PHP 8.5'te exception yakala
    error_log("Unserialize failed: " . $e->getMessage());
}

// 2. Increment/Decrement operatörleri daha katı
// String increment davranışı değişti

$str = 'z';
$str++; // PHP 8.4: 'aa' | PHP 8.5: Warning + 'aa'
// PHP 9.0'da TypeError fırlatacak

// ✅ Yeni fonksiyon kullanın:
$str = str_increment('z'); // 'aa' - Güvenli yöntem
⚠️ Dikkat / Warning:

PHP 8.5'e yükseltmeden önce deprecated warning'leri kontrol edin. error_reporting(E_ALL) ile tüm uyarıları görün ve PHP 9.0'a hazırlıklı olun.

5. PHP 9.0 Yol Haritası (PHP 9.0 Roadmap)

PHP 9.0 henüz resmi bir tarih almadı ama beklenen özellikler ve değişiklikler hakkında Alesta Web olarak bilgi veriyoruz.

5.1 Beklenen Özellikler (Expected Features)

Özellik / Feature Açıklama / Description
Stricter Type Safety Warning'lar exception'a dönüşecek
Increment/Decrement TypeError String/boolean increment TypeError fırlatacak
Undefined Variable Error Tanımsız değişken kullanımı fatal error olacak
array_keys_filter() Yeni fonksiyon: array_keys() modları ayrılacak
Session URL Rewriting Kaldırılacak use_trans_sid ve SID constant kaldırılacak

5.2 PHP 9.0 Tahmini Zaman Çizelgesi

PHP Release Takvimi (Estimated)

PHP 8.5: Kasım 2025 ✅ (Released)
PHP 8.6: Kasım 2026 (Geliştirme aşamasında)
PHP 9.0: 2027 veya sonrası (Henüz resmi tarih yok)

* PHP 8.x serisi en az 2028'e kadar desteklenecek
* PHP artık 4 yıllık destek döngüsü sunuyor:
  - 2 yıl bug fix
  - 2 yıl security fix
? Alesta Web Önerisi / Recommendation:

PHP 9.0'a hazırlanmak için şimdiden PHP 8.5'in strict mode'unu kullanın. declare(strict_types=1); her dosyada olmalı. Alesta Web projelerinde bu standartı uyguluyoruz.

6. PHP 8.5 Upgrade Rehberi (Upgrade Guide)

Mevcut projenizi PHP 8.5'e nasıl yükseltirsiniz? Alesta Web ekibinin adım adım rehberi:

Adım 1: Uyumluluk Kontrolü (Compatibility Check)

# PHPCompatibility ile kontrol
composer require --dev phpcompatibility/php-compatibility

# phpcs.xml oluştur
<?xml version="1.0"?>
<ruleset name="PHP 8.5 Compatibility">
    <rule ref="PHPCompatibility"/>
    <config name="testVersion" value="8.5"/>
</ruleset>

# Kontrolü çalıştır
./vendor/bin/phpcs --standard=PHPCompatibility src/

Adım 2: Composer Bağımlılıklarını Güncelle (Update Dependencies)

# composer.json'da PHP versiyonunu güncelle
{
    "require": {
        "php": "^8.5"
    }
}

# Bağımlılıkları güncelle
composer update

# Eğer hata alırsanız:
composer update --with-all-dependencies

Adım 3: PHP 8.5 Kurulumu (Installation)

# Ubuntu/Debian:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.5 php8.5-fpm php8.5-mysql php8.5-mbstring php8.5-xml

# CentOS/RHEL (Remi repo):
sudo dnf install php85 php85-php-fpm php85-php-mysqlnd

# macOS (Homebrew):
brew install php@8.5

# Docker:
FROM php:8.5-fpm
✅ Test Etmeyi Unutmayın / Don't Forget to Test:

Upgrade sonrası tüm testlerinizi çalıştırın. PHPUnit, Pest veya hangi test framework kullanıyorsanız. Alesta Web olarak %100 test coverage öneriyoruz.

7. Yaygın Hatalar ve Çözümleri (Common Errors and Solutions)

PHP 8.5'e geçişte karşılaşabileceğiniz yaygın hatalar. Alesta Web ekibinin çözümleri:

❌ Hata 1: unserialize() Exception

// Hata Mesajı (Error Message):
Fatal error: Uncaught UnserializationFailedException

// Neden? (Why?)
PHP 8.5'te unserialize() artık exception fırlatıyor

// Çözüm (Solution):
// Try-catch bloğu ekleyin
try {
    $data = unserialize($serializedData);
} catch (UnserializationFailedException $e) {
    // Hata durumunda fallback
    $data = [];
    error_log("Unserialize error: " . $e->getMessage());
}

❌ Hata 2: String Increment Deprecated Warning

// Hata Mesajı (Error Message):
Deprecated: Increment on non-numeric string is deprecated

// Neden? (Why?)
String üzerinde ++ operatörü deprecated

// Çözüm (Solution):
// str_increment() fonksiyonunu kullanın

// ❌ Eski yöntem (Old way):
$letter = 'z';
$letter++; // Deprecated warning

// ✅ Yeni yöntem (New way):
$letter = 'z';
$letter = str_increment($letter); // 'aa'

❌ Hata 3: Composer Package Uyumsuzluğu

// Hata Mesajı (Error Message):
Package x/y requires php ^8.4 -> your php version (8.5.0) does not satisfy

// Çözüm (Solution):
// 1. Paketi güncellemeyi deneyin
composer update x/y

// 2. Olmazsa geçici olarak ignore edin
composer install --ignore-platform-req=php

// 3. Paket maintainer'a issue açın
// Çoğu paket hızlıca PHP 8.5 desteği ekler
⚠️ Alesta Web Uyarısı / Warning:

Production'a geçmeden önce staging ortamında kapsamlı test yapın. PHP 8.5, geriye uyumlu olsa da bazı edge case'lerde sorun çıkabilir. alestaweb.com'da tüm testleri geçtikten sonra deploy ediyoruz.

? Kaynaklar ve Referanslar / Sources and References

Bu makalede kullanılan bilgiler aşağıdaki resmi kaynaklardan derlenmiştir (information compiled from official sources):

Alesta Web olarak tüm bilgileri test ettik ve doğruladık (we tested and verified all information).

✅ PHP 8.5'e Hazırsınız! (Ready for PHP 8.5!)

PHP 8.5 modern PHP geliştirme için harika özellikler sunuyor. Alesta Web olarak yeni projelerinizde PHP 8.5 kullanmanızı ve PHP 9.0'a hazırlanmanızı öneriyoruz.

Hızlı Özet / Quick Summary:

  • ✅ Pipe Operator (|>): Fonksiyonel programlama için devrim
  • ✅ Asymmetric Visibility: Temiz property erişim kontrolü
  • ✅ array_first(), array_last(): Yeni helper fonksiyonlar
  • ✅ Stricter error handling: Exception bazlı hatalar
  • ✅ PHP 9.0 hazırlık: Deprecated özelliklerden kaçının

Faydalı Linkler / Useful Links:

© 2026 AlestaWeb - Tüm hakları saklıdır. Bu PHP rehberi Alesta Web ekibi tarafından hazırlanmıştır.

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç