helsingborg-stad/wpservice

通过提供集中化的WpService,以简洁的方式暴露全局WordPress函数,简化WordPress集成。轻松简化您的开发工作流程,并轻松增强WordPress集成。


README

Contributors Forks Stargazers Issues License

Unit Tests PHP Versions

WpService

通过提供集中化的WpService,以简洁的方式暴露全局WordPress函数,简化WordPress集成。轻松简化您的开发工作流程,并轻松增强WordPress集成。

报告错误 · 请求功能

关于WpService

通过应用接口分离,在插件和主题中启用全局WordPress函数的使用。可以通过应用可用的装饰器来使用WordPress服务的不同版本。

入门

安装

  1. 通过composer安装包
composer require helsingborg-stad/wpservice
  1. 在您的插件或主题中使用WpService
use WpService\Implementations\NativeWpService;

$wpService = new NativeWpService();
$wpService->getTheId();

装饰器

文本域装饰器

应用于翻译函数的默认文本域。

use WpService\Implementations\WpServiceWithTextDomain;
use WpService\Implementations\NativeWpService;

$service = new NativeWpService();
$service = new WpServiceWithTextDomain($service, 'my-text-domain');

$service->__('Hello World'); // Will automatically use 'my-text-domain' as the text domain.

在测试中使用WpService

为了使测试依赖于WpService或其部分的代码更容易,提供了一个FakeWpService实现。当您想在不依赖WordPress函数的情况下测试代码时,此实现非常有用。

示例

假设您有一个以下类,它使用WpService的一部分

use WpService\Contracts\GetTheId;

class MyService
{
    public function __construct(private GetTheId $wpService)
    {
    }

    public function getCurrentPostId(): int
    {
        return $this->wpService->getTheId();
    }
}

然后您可以在测试中使用FakeWpService来模拟WpService的结果以及验证对WpService函数的调用

use WpService\Implementations\FakeWpService;
use PHPUnit\Framework\TestCase;

class MyServiceTest extends TestCase
{
    public function testGetCurrentPostId()
    {
        // Given
        $fakeWpService = new FakeWpService(['getTheId' => 123]);
        $myService = new MyService($fakeWpService);

        // When
        $postId = $myService->getCurrentPostId();

        // Then
        $this->assertEquals([123], $wpService->methodCalls['isSingle'][0]);
        $this->assertEquals(123, $postId);
    }
}

传递返回值到FakeWpService

FakeWpService构造函数接受一个键值对数组,其中键是方法名称,值是方法的返回值。

# Using a generic return value for all calls to the method.
$fakeWpService = new FakeWpService(['getTheTitle' => 'Test Title']);
$fakeWpService->getTheTitle(); // Returns 'Test Title'
$fakeWpService->getTheTitle(321); // Returns 'Test Title'
$fakeWpService->getTheTitle(123); // Returns 'Test Title'

# Using a callback to determine the return value based on the arguments passed to the method.
$return         = fn($postId) => $postId === 123 ? 'Test Title' : '';
$fakeWpService  = new FakeWpService(['getTheId' => $return]);
$fakeWpService->getTheTitle(); // Returns ''
$fakeWpService->getTheTitle(321); // Returns ''
$fakeWpService->getTheTitle(123); // Returns 'Test Title'

构建工具

  • PHP

测试

运行测试

在终端中运行 composer test

贡献

贡献使得开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做出的任何贡献都将被 高度赞赏

  1. 分支项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开Pull Request

许可协议

MIT 许可协议 下分发。