Deprecated Function Warning Hatası Nedir?
Bir başka deyişle, PHP size "Bu fonksiyonu kullanma, çünkü gelecekte tamamen silinecek" diyor. Hata, genellikle geliştiricilerin eski yöntemlerle yazılmış kodları kullanmasından kaynaklanır. PHP'nin yeni sürümlerinde, bu eski fonksiyonlar artık önerilmiyor ve yerine daha güvenli, daha verimli yöntemler geliyor.
Örneğin, PHP 7.0 ile birlikte `mysql_*` fonksiyonları kullanımdan kaldırıldı ve `mysqli_*` fonksiyonları önerilmeye başlandı. Eğer hala eski fonksiyonlarla çalışıyorsanız, işte tam burada bu uyarıyı alırsınız.
PHP'deki Deprecated Fonksiyonları Nasıl Bulurum?
1. PHP Error Logs (Hata Kayıtları): Hata mesajlarını görmek için error_log() fonksiyonunu aktif hale getirebilirsiniz. Böylece hangi fonksiyonun deprecated olduğunu görebilirsiniz.
2. Kodu Gözden Geçirme: Kodu manuel olarak kontrol edin. Hangi fonksiyonlar kullanılmış? Eski fonksiyonlar genellikle “mysql_*”, “ereg_*” gibi ifadelerle başlar.
3. PHP Compatibility Checker (PHP Uyumluluk Kontrolü): Eğer büyük bir projede çalışıyorsanız, çeşitli araçlarla PHP kodunuzu kontrol edebilirsiniz. Bunlar eski fonksiyonları bulmanıza yardımcı olur.
Deprecated Hatalarından Kurtulmanın Yolları
# 1. Yeni Fonksiyonları Kullanın
Örneğin, `mysql_query()` fonksiyonu eski bir fonksiyondur ve `mysqli_query()` veya `PDO` ile değiştirilebilir. Aşağıda basit bir örnek:
```php
// Eski kod
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('database', $conn);
$result = mysql_query('SELECT * FROM users');
// Yeni kod
$conn = mysqli_connect('localhost', 'root', '', 'database');
$result = mysqli_query($conn, 'SELECT * FROM users');
```
Yukarıdaki örnekte, eski `mysql_*` fonksiyonları, yeni `mysqli_*` fonksiyonlarıyla değiştirildi. Bu, PHP 7 ve sonrasında geçerli bir yöntemdir.
# 2. Fonksiyonları Kapatın
```php
error_reporting(E_ALL & ~E_DEPRECATED);
```
Yukarıdaki kod satırı, sadece "deprecated" uyarılarını gizler. Ancak, bu yöntemin önerilen bir çözüm olmadığını unutmayın.
# 3. Kodunuzu Güncelleyin
PHP 7 ve Sonrası: Hangi Fonksiyonlar Deprecated?
- `mysql_*` fonksiyonları
- `ereg_*` fonksiyonları
- `split()` ve `spliti()` fonksiyonları
- `set_magic_quotes_runtime()` fonksiyonu
Bu fonksiyonlar, PHP'nin daha güvenli ve hızlı alternatifleriyle değiştirilmiştir. Dolayısıyla, bu tür fonksiyonları kodlarınızda görürseniz, alternatifleriyle değiştirmeniz gerekecek.
Sonuç: Bu Hata Beni Neden Bu Kadar Endişelendiriyor?
Bundan sonra, PHP projenizde eski fonksiyonları görürseniz, doğrudan yeni alternatiflerle değiştirmek en doğru yaklaşım olacaktır. Bu, sadece PHP'nin gelecekteki sürümleriyle uyumlu kalmanızı sağlamakla kalmaz, aynı zamanda yazılımınızı daha güvenli ve verimli hale getirir.