PHP
Veritabanı yapısı
posts tablosunu ve PDO bağlantısını oluşturursun.
Bellek içi veritabanı ile başlamak
Blog projesinde veriyi SQLite bellek içi veritabanı ile tutacaksın. Bunun için new PDO("sqlite::memory:") ile bir PDO bağlantısı açarsın. ::memory: son eki verinin dosyaya değil işlem belleğine yazılmasını söyler; böylece her test çalıştırmasında temiz bir tabloyla başlarsın ve dosya oluşturmazsın.
Bağlantıyı kurduktan sonra $pdo->exec() ile bir CREATE TABLE ifadesi çalıştırır ve posts tablosunu oluşturursun. Bu tabloda her yazının id, title, content ve author alanları olur.
posts tablosunu oluşturmak
setupDatabase() fonksiyonu bağlantıyı kurar ve tabloyu hazırlar. Tablo yapısı: id birincil anahtar (otomatik artan), title, content ve author ise metin alanlarıdır. DDL ifadelerini çalıştırmak için $pdo->exec() kullanırsın; bu yöntem prepare kadar esnek değildir ama tablo tanımı için uygundur.
Hataları erken yakalamak için $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) yazarsın; böylece hatalu bir sorgu istisna fırlatır ve sessizce geçmez.
Uygulama setupDatabase fonksiyonunu yaz
Bir setupDatabase(): PDO fonksiyonu yaz. İçinde new PDO("sqlite::memory:") ile bağlan, setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) ile hata modunu ayarla, $pdo->exec("CREATE TABLE posts (...)") ile posts tablosunu oluştur ve return $pdo; ile döndür. Tabloda id (birincil anahtar), title, content ve author alanları olsun. Demodaki çıktıyı üret.
Örnek çözümü göster
PDO { ... } yaz. İçinde $pdo = new PDO("sqlite::memory:"); ile bağlan, $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ile hata modunu ayarla, $pdo->exec("CREATE TABLE posts (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, content TEXT NOT NULL, author TEXT NOT NULL)"); ile tabloyu oluştur ve return $pdo; döndür.
Örnek çözüm:
<?php
// Blog projesi: BlogPost sınıfı + setupDatabase
class BlogPost {
public string $title = "";
public string $content = "";
public string $author = "";
}
function setupDatabase(): PDO {
$pdo = new PDO("sqlite::memory:");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
author TEXT NOT NULL
)");
return $pdo;
}
// Demo:
$pdo = setupDatabase();
$count = $pdo->query("SELECT COUNT(*) FROM posts")->fetchColumn();
echo "Kayıt: " . $count;
Kendini test et
-
sqlite::memory: ne zaman kullanışlıdır?
- Dosya oluşturmadan hızlı test yapmak için
- Her testte temiz bir tabloyla başlamak için
- Kalıcı bir dosya veritabanı kurmak için
- Uzak sunucuya bağlanmak için
Cevabı göster
Her testte temiz bir tabloyla başlamak için — Doğru. Bellek içi veritabanı her çalıştırmada sıfırdan başlar; testler deterministik olur.
-
DSN dizesini tamamla
$pdo = new PDO("____");
Cevabı göster
$pdo = new PDO("sqlite::memory:");
-
PDO yöntemlerini eşleştir
- new PDO
- Bağlantı kurar
- ->exec
- DDL çalıştırır
- ->prepare
- Hazırlar sorgu
- ->fetchAll
- Tüm satırları alır
Sıradaki ders: Post ekleme ve listeleme