Dependency injection fikrine bir bakın. Kısaca size İşte bir örnek ... buna ihtiyacı verileri alma buna zıt olarak neye ihtiyacı kodunuzu beslemek gerekir:
örnek Bağımlılık Enjeksiyon ile Dependency Injection
function sanitize1() {
foreach($_POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
örnek olmadan
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2($_POST);
Farkı görüyor musunuz? PHPUnit testinizde, sanitize2()
'u istediğiniz bir ilişkisel dizi geçirebilirsiniz; bağımlılığı enjekte ettin. Oysa sanitize1()
, $_POST
ile birleştirilmiştir. $_POST
ve $_GET
yine de kod dizileridir, bu nedenle üretim kodunuzda $_GET
ya da $_POST
işlevinizi geçirebilirsiniz, ancak birim testlerinde bazı beklenen verileri kodlayabilirsiniz.
Birim testi örneği: bunun için
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}
teşekkürler - bu muhtemelen en iyi çözüm olduğunu düşündüm. Çok iyi cevap! –
Teşekkürler phatduckk. Basit ama etkili! :) – nonshatter