jangregor/phpstan-prophecy 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jangregor/phpstan-prophecy

Composer 安装命令:

composer require jangregor/phpstan-prophecy

包简介

Provides a phpstan/phpstan extension for phpspec/prophecy

README 文档

README

Close Integrate Merge Triage

Latest Stable Version Total Downloads

Violinist Enabled

Provides a phpspec/prophecy extension for phpstan/phpstan.

Installation

Run

composer require --dev jangregor/phpstan-prophecy

Configuration

Automatic

When using phpstan/extension-installer, no further setup is required.

Manual

When not using phpstan/extension-installer, extension.neon needs to be included in phpstan.neon:

 includes:
+	- vendor/jangregor/phpstan-prophecy/extension.neon

Usage

prophesize() and reveal()

<?php

use PHPUnit\Framework;

final class ExampleTest extends Framework\TestCase
{
    public function testSomething(): void
    {
        $prophecy = $this->prophesize(SomeModel::class);

        $testDouble = $prophecy->reveal();

        // ...
    }
}

💡 With this extension enabled, phpstan/phpstan will understand that $testDouble is an instance of SomeModel.

prophesize(), willExtend(), and reveal()

<?php

use PHPUnit\Framework;

final class ExampleTest extends Framework\TestCase
{
    public function testSomething(): void
    {
        $prophecy = $this->prophesize()->willExtend(SomeModel::class);

        $testDouble = $prophecy->reveal();

        // ...
    }
}

💡 With this extension enabled, phpstan/phpstan will understand that $testDouble is an instance of SomeModel.

prophesize(), willImplement(), and reveal()

<?php

use PHPUnit\Framework;

final class ExampleTest extends Framework\TestCase
{
    public function testSomething(): void
    {
        $prophecy = $this->prophesize(SomeModel::class)->willImplement(SomeInterface::class);

        $testDouble = $prophecy->reveal();

        // ...
    }
}

💡 With this extension enabled, phpstan/phpstan will understand that $testDouble is an instance of SomeModel that also implements SomeInterface.

Method Predictions

<?php

use PHPUnit\Framework;

final class ExampleTest extends Framework\TestCase
{
    public function testSomething(): void
    {
        $prophecy = $this->prophesize(SomeModel::class);

        $prophecy
            ->doubleTheNumber(Argument::is(2))
            ->willReturn(4);

        $testDouble = $prophecy->reveal();

        // ...
    }
}

💡 With this extension enabled, phpstan/phpstan will understand that $prophecy accepts method calls to all methods that are implemented by its prophesized class (or additionally implemented interfaces, when using willImplement()).

Method Arguments

❗ Currently here are no checks in place to validate the arguments of methods that are invoked on prophecies.

Development

A development environment is provided via .docker/Dockerfile.

Run

$ docker build --tag phpstan-prophecy .docker/

to build and tag the Docker image.

Run

$ docker run -it --rm  --volume "$PWD":/var/www/html --workdir /var/www/html phpstan-prophecy bash

to open a shell in the Docker container.

Changelog

Please have a look at CHANGELOG.md.

Contributing

Please have a look at CONTRIBUTING.md.

License

This package is licensed using the MIT License.

Please have a look at LICENSE.md.

jangregor/phpstan-prophecy 适用场景与选型建议

jangregor/phpstan-prophecy 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 19.8M 次下载、GitHub Stars 达 111, 最近一次更新时间为 2017 年 11 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 jangregor/phpstan-prophecy 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 jangregor/phpstan-prophecy 我们能提供哪些服务?
定制开发 / 二次开发

基于 jangregor/phpstan-prophecy 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 19.8M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 111
  • 点击次数: 24
  • 依赖项目数: 364
  • 推荐数: 1

GitHub 信息

  • Stars: 111
  • Watchers: 3
  • Forks: 30
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-11-20