SinonPHP membenarkan melanjutkan atau mengatasi fungsi dan kaedah PHP untuk ujian unit atau menyesuaikan tingkah laku kod. Ia menyediakan fungsi utama berikut: Fungsi sambungan: Gunakan fungsi SinonPHPstub untuk melanjutkan fungsi PHP sedia ada. Kaedah sambungan: Gunakan kaedah kelas sambungan skop SinonPHPstub. Mengatasi fungsi dan kaedah: Gunakan fungsi atau kaedah SinonPHPoverride untuk mengatasi fungsi PHP atau kaedah kelas.
Cara menggunakan SinonPHP untuk melanjutkan fungsi PHP
SinonPHP ialah sambungan PHP yang membolehkan anda melanjutkan atau menulis ganti fungsi dan kaedah PHP sedia ada untuk melaksanakan ujian unit atau menyesuaikan tingkah laku kod.
Pemasangan
Pasang SinonPHP menggunakan Komposer:
composer require sinonphp/sinonphp
Fungsi sambungan
Untuk memanjangkan fungsi PHP, gunakan fungsi SinonPHPstub
: canSinonPHPstub
函数:
$stub = SinonPHP\stub::create() ->spy('strtotime'); // 扩展 strtotime 函数
你可以使用$stub
对象来设置存根的行为,例如:
$stub->returns(new DateTime('now')); // 返回当前时间
扩展方法
要扩展一个类方法,请使用SinonPHPstub
作用域:
$stub = SinonPHP::stub() ->extends('DateTime') ->method('format'); // 扩展 DateTime::format 方法
覆盖函数和方法
要覆盖一个PHP函数或类方法,请使用SinonPHPoverride
ree SinonPHPstub
:
You$reee objek untuk menetapkan kelakuan stub, contohnya: SinonPHP\override('strtotime', function($timestamp) {
return new DateTime('now'); // 覆盖 strtotime 函数
});
SinonPHP::override('DateTime')->method('format')
->implementation(function() {
return '当前时间: ' . $this->format('Y-m-d H:i:s');
}); // 覆盖 DateTime::format 方法
Untuk melanjutkan kaedah kelas, gunakan SinonPHPstub
Skop:
use SinonPHP\stub; $stub = stub::create() ->spy('strtotime'); $result = strtotime('tomorrow'); $stub->assertCalledOnce(); // 断言 strtotime 被调用一次
Timpa fungsi dan kaedah
🎜Untuk mengatasi fungsi PHP atau kaedah kelas, sila gunakan fungsi atau kaedahSinonPHPoverride
: 🎜use SinonPHP\override; override('DateTime')->method('format') ->implementation(function() { return '格式化日期: ' . $this->format('Y-m-d H:i:s'); }); $date = new DateTime('now'); echo $date->format('d-m-Y'); // 输出: 格式化日期: dd-mm-YYYY
Atas ialah kandungan terperinci Bagaimana untuk melanjutkan fungsi PHP menggunakan SinonPHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!