Alesta WEB

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
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 expressionGerç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!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', 'admin@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; // ✅ 1Ne 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
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öntemPHP 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 fixPHP 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-dependenciesAdı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-fpmUpgrade 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 eklerProduction'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):
- PHP Official Supported Versions - Resmi PHP versiyon desteği
- Stitcher.io - PHP in 2026 - PHP 2026 analizi
- PHP.Watch - PHP Versions - Detaylı versiyon bilgileri
- PHP 9.0 Features Preview - PHP 9.0 beklenen özellikler
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:
- Alesta Web Ana Sayfa: alestaweb.com
- PHP Resmi Site: php.net
- Diğer PHP Rehberleri: Alesta Web Blog
© 2026 AlestaWeb - Tüm hakları saklıdır. Bu PHP rehberi Alesta Web ekibi tarafından hazırlanmıştır.

