Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
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!
PHP 8.5, PHP 8 serisinin devamı niteliğinde birçok yararlı özellik getiriyor. Alesta Web olarak en önemli yenilikleri sizin için derledik.
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.
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.
<?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
<?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.
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.
<?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
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.
PHP 8.5'e yükseltmeden önce bilmeniz gereken önemli değişiklikler. Alesta Web olarak dikkat etmeniz gereken noktaları listeledik.
<?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());
<?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
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.
PHP 9.0 henüz resmi bir tarih almadı ama beklenen özellikler ve değişiklikler hakkında Alesta Web olarak bilgi veriyoruz.
| Ö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 |
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
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.
Mevcut projenizi PHP 8.5'e nasıl yükseltirsiniz? Alesta Web ekibinin adım adım rehberi:
# 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/
# 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
# 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
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.
PHP 8.5'e geçişte karşılaşabileceğiniz yaygın hatalar. Alesta Web ekibinin çözümleri:
// 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 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 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
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.
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 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:
Faydalı Linkler / Useful Links:
© 2026 AlestaWeb - Tüm hakları saklıdır. Bu PHP rehberi Alesta Web ekibi tarafından hazırlanmıştır.