- Konu sahibi
- #1
“PHP pure” tek başına belirli bir ürün veya sürüm adı değildir; geçtiği bağlam kontrol edilmelidir. Kod geliştirme konuşmalarında
Pure PHP kullanırken PDO, oturum yönetimi, JSON işlevleri veya cURL gibi PHP’nin yerleşik bileşenlerinden yararlanabilirsiniz. Önemli olan, uygulamanın yönlendirme, form işleme, doğrulama ve dosya organizasyonu gibi ana kararlarının hazır bir framework tarafından belirlenmemesidir.
PHP kodu sunucuda çalışır; istemciye genellikle HTML, JSON veya başka bir çıktı gönderilir. Web ortamında çalışması için PHP yorumlayıcısının yanında bir web sunucusu gerekir. Komut satırı kullanımında ise web sunucusu ve tarayıcı zorunlu değildir.
Basit bir çıktı örneği şöyledir:
Buradaki
Pure PHP, her şeyi tek bir dosyada yazmak anlamına gelmez. Uygulama büyüdükçe sınıflar, ayrı işlem katmanları, şablonlar ve yapılandırma dosyaları oluşturmak yine mümkündür. Fark, bu mimariyi sizin kurmanızdır.
Bir form işleyicide temel akış şu şekilde kurulabilir:
Örneğin yalnızca e-posta alanını doğrulayan basit bir uç nokta şöyle olabilir:
Bu örnek, doğrulamanın yapıldığını gösterir; tek başına tam bir üretim güvenliği katmanı değildir. Oturum açılmış kullanıcıların işlem yaptığı formlarda CSRF koruması, kimlik doğrulama, yetkilendirme, güvenli oturum ayarları ve hata günlüğü ayrıca ele alınmalıdır.
Pure PHP, küçük bir form, tek amaçlı bir yönetim aracı, basit bir API veya PHP’nin temel çalışma mantığını öğrenmek için uygun olabilir. Projede kullanıcı rolleri, çok sayıda ekran, kapsamlı API uç noktaları, kuyruklar, testler ve ekip çalışması arttıkça yönlendirme, doğrulama ve bakım yükünü de sizin yönetmeniz gerekir.
Kararı verirken şu ayrım yardımcı olur:
Pure PHP seçilirse en azından
Composer kullanmanız da uygulamanın framework kullanmadığı gerçeğini değiştirmez. Composer bir bağımlılık yönetim aracıdır; belirleyici olan, uygulamanın ana mimarisinin bir framework’e bırakılıp bırakılmadığıdır. Ancak kullanılan her paketin bakım durumu, lisansı ve güvenliği ayrıca incelenmelidir.
Hayır. WordPress PHP ile yazılmış bir CMS’dir ve hazır içerik yönetimi, eklenti yapısı ve tema sistemi sunar. Pure PHP ise böyle bir CMS kullanmadan uygulamayı doğrudan PHP ile kurma yaklaşımını anlatır.
Evet. Pure PHP, yalnızca prosedürel kod yazmak demek değildir. Sınıflar, arayüzler, namespace yapısı ve MVC benzeri bir organizasyon kullanılabilir; bunları hazır bir framework yerine siz tasarlarsınız.
Hayır. Böyle ayrı bir resmî sürüm veya çalıştırma düğmesi yoktur. Gereken PHP sürümünü kodun kullandığı dil özellikleri, uzantılar ve ek paketlerin gereksinimleri belirler. Yayına almadan önce gerçek sunucu ortamının bu gereksinimlerle eşleştiğini kontrol edin.
Pure PHP ifadesi framework veya CMS kullanmadan PHP ile geliştirmeyi anlatmak için kullanılabilir. Bu rehber bu kullanımını ele alır; benzer adlı bir paketin varlığını ya da sürümünü varsaymaz. Bu ifade PHP’nin ayrı bir sürümü, çalışma modu veya resmî bir standardı değildir; geliştiricilerin kullandığı pratik bir tanımdır.Pure PHP kullanırken PDO, oturum yönetimi, JSON işlevleri veya cURL gibi PHP’nin yerleşik bileşenlerinden yararlanabilirsiniz. Önemli olan, uygulamanın yönlendirme, form işleme, doğrulama ve dosya organizasyonu gibi ana kararlarının hazır bir framework tarafından belirlenmemesidir.
Pure PHP nasıl çalışır?
PHP kodu sunucuda çalışır; istemciye genellikle HTML, JSON veya başka bir çıktı gönderilir. Web ortamında çalışması için PHP yorumlayıcısının yanında bir web sunucusu gerekir. Komut satırı kullanımında ise web sunucusu ve tarayıcı zorunlu değildir.
Basit bir çıktı örneği şöyledir:
PHP:
<?php
$name = 'Ayşe';
echo 'Merhaba, ' . htmlspecialchars($name, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
Buradaki
htmlspecialchars() işlevi, metni HTML içinde gösterirken özel karakterleri kaçışlar. Kullanıcıdan veya dış bir servisten gelen veriyi doğrudan HTML’e yazdırmak yerine, çıktının bağlamına uygun kaçış uygulanmalıdır.Pure PHP, her şeyi tek bir dosyada yazmak anlamına gelmez. Uygulama büyüdükçe sınıflar, ayrı işlem katmanları, şablonlar ve yapılandırma dosyaları oluşturmak yine mümkündür. Fark, bu mimariyi sizin kurmanızdır.
Somut örnek: POST formunu işlemek
Bir form işleyicide temel akış şu şekilde kurulabilir:
- İsteğin gerçekten POST yöntemiyle geldiğini kontrol edin.
- Alanları alın ve beklenen biçimde olup olmadığını doğrulayın.
- Geçersiz veride uygun HTTP durum kodu ve kullanıcıya anlaşılır hata döndürün.
- Veritabanına yazarken PDO prepared statement kullanın.
- İşlem tamamlandıktan sonra uygun yönlendirmeyle form yenilemesinde tekrar gönderim riskini azaltın; ödeme gibi işlemlerde ek tekilleştirme de gerekebilir.
Örneğin yalnızca e-posta alanını doğrulayan basit bir uç nokta şöyle olabilir:
PHP:
<?php
header('Content-Type: text/plain; charset=UTF-8');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header('Allow: POST');
http_response_code(405);
exit('Yalnızca POST isteği kabul edilir.');
}
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($email === false || $email === null) {
http_response_code(422);
exit('Geçerli bir e-posta adresi girin.');
}
echo 'Form alındı.';
Bu örnek, doğrulamanın yapıldığını gösterir; tek başına tam bir üretim güvenliği katmanı değildir. Oturum açılmış kullanıcıların işlem yaptığı formlarda CSRF koruması, kimlik doğrulama, yetkilendirme, güvenli oturum ayarları ve hata günlüğü ayrıca ele alınmalıdır.
Ne zaman tercih edilir?
Pure PHP, küçük bir form, tek amaçlı bir yönetim aracı, basit bir API veya PHP’nin temel çalışma mantığını öğrenmek için uygun olabilir. Projede kullanıcı rolleri, çok sayıda ekran, kapsamlı API uç noktaları, kuyruklar, testler ve ekip çalışması arttıkça yönlendirme, doğrulama ve bakım yükünü de sizin yönetmeniz gerekir.
Kararı verirken şu ayrım yardımcı olur:
| Proje durumu | Yaklaşım | Ana dikkat noktası |
|---|---|---|
| Tek sayfalık araç veya küçük form | Pure PHP | Doğrulama ve çıktı güvenliği |
| Orta ölçekli özel uygulama | Düzenli klasör yapısıyla Pure PHP | Katmanları ve sorumlulukları ayırma |
| Büyük ve çok kullanıcılı uygulama | Framework değerlendirmesi | Test, bakım ve ekip standardı |
Pure PHP seçilirse en azından
public, src, templates ve yapılandırma için ayrı alanlar planlanabilir. Veritabanı bağlantılarını ve SQL sorgularını her sayfaya dağıtmak yerine ortak bir erişim katmanı oluşturmak, uygulama büyüdüğünde değişiklikleri kolaylaştırır.Sık yapılan hatalar
- Framework kullanmamanın otomatik olarak güvenli olduğunu sanmak. Güvenlik, kullanılan araçtan çok uygulanan kontrollerle ilgilidir.
- Kullanıcı verisini HTML’e doğrudan yazdırmak. Çıktı bağlamına uygun kaçış uygulanmalıdır.
- SQL sorgusunu kullanıcı girdisini metin birleştirmeyle ekleyerek oluşturmak. Değerler için prepared statement kullanılmalıdır; tablo veya sütun adları ise kullanıcı girdisiyle doğrudan parametrelenemez.
- Tüm uygulamayı tek PHP dosyasına koymak. Küçük başlayan kod kısa sürede bakımı zor bir yapıya dönüşebilir.
- Ayrıntılı hata mesajlarını üretimde ziyaretçiye göstermek. Hatalar güvenli biçimde günlüğe alınmalı, istemciye gereksiz iç bilgi gönderilmemelidir.
- Oturum ayarlarını varsayılan kabul etmek. HTTPS kullanılan uygulamalarda güvenli, HttpOnly ve uygun SameSite çerez ayarları değerlendirilmelidir.
Composer kullanmanız da uygulamanın framework kullanmadığı gerçeğini değiştirmez. Composer bir bağımlılık yönetim aracıdır; belirleyici olan, uygulamanın ana mimarisinin bir framework’e bırakılıp bırakılmadığıdır. Ancak kullanılan her paketin bakım durumu, lisansı ve güvenliği ayrıca incelenmelidir.
Sık sorulan sorular
Pure PHP ile WordPress aynı şey midir?
Hayır. WordPress PHP ile yazılmış bir CMS’dir ve hazır içerik yönetimi, eklenti yapısı ve tema sistemi sunar. Pure PHP ise böyle bir CMS kullanmadan uygulamayı doğrudan PHP ile kurma yaklaşımını anlatır.
Pure PHP’de sınıf ve MVC kullanılabilir mi?
Evet. Pure PHP, yalnızca prosedürel kod yazmak demek değildir. Sınıflar, arayüzler, namespace yapısı ve MVC benzeri bir organizasyon kullanılabilir; bunları hazır bir framework yerine siz tasarlarsınız.
Pure PHP yazınca hosting için ayrı bir PHP sürümü seçilir mi?
Hayır. Böyle ayrı bir resmî sürüm veya çalıştırma düğmesi yoktur. Gereken PHP sürümünü kodun kullandığı dil özellikleri, uzantılar ve ek paketlerin gereksinimleri belirler. Yayına almadan önce gerçek sunucu ortamının bu gereksinimlerle eşleştiğini kontrol edin.