Fikri bir göz atın Dependency injection. Özetle bunu ihtiyacı veri alma buna zıt olarak gerekenleri kodunuzu beslemek gerekir ... İşte bir örnek:
örnek Dependency Injection olmadan
function sanitize1() {
foreach($_POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
Bağımlılık Enjeksiyonu ile örnek
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2($_POST);
Fark görüyor musunuz? Lütfen PHPUnit testte seçtiğiniz sanitize2() bir ilişkisel dizi iletebilirsiniz; Eğer bağımlılık enjekte ettik. sanitize1() $_POST ile birleştirilir ise. $_POST ve üretim kodu size $_GET geçmek veya $_POST işlevinize ancak ünite testleri böylece $_GET doç diziler zaten vardır Eğer sert kod bazı beklenen veri ederim.
Birim test örneği:
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}