草庐IT

multiple-interface-implem

全部标签

php - 如何模拟使用 PHPUnit 实现 Iterator 接口(interface)的类?

我如何模拟实现Iterator的类的依赖项?接口(interface)是否稳健? 最佳答案 网上已经有一些解决这个问题的现有解决方案,但我看到的所有解决方案都有一个类似的弱点:它们依赖于->expects($this->at(n))。PHPUnit中的'expectsat'函数有一些奇怪的行为,因为计数器是针对模拟的每个方法调用的。这意味着,如果您在直接foreach之外对迭代器进行方法调用,则必须调整迭代器模拟。解决方案是创建一个包含基本迭代器数据(源数组和位置)的对象,并将其传递给returnCallback闭包。因为它是通过引

php - 如何模拟使用 PHPUnit 实现 Iterator 接口(interface)的类?

我如何模拟实现Iterator的类的依赖项?接口(interface)是否稳健? 最佳答案 网上已经有一些解决这个问题的现有解决方案,但我看到的所有解决方案都有一个类似的弱点:它们依赖于->expects($this->at(n))。PHPUnit中的'expectsat'函数有一些奇怪的行为,因为计数器是针对模拟的每个方法调用的。这意味着,如果您在直接foreach之外对迭代器进行方法调用,则必须调整迭代器模拟。解决方案是创建一个包含基本迭代器数据(源数组和位置)的对象,并将其传递给returnCallback闭包。因为它是通过引

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

我是单元测试和PHPUnit的新手。我需要一个mock,我可以完全控制它,实现ConfigurationInterface接口(interface)。测试对象是ReportEventParamConverter对象,测试必须检查我的对象和接口(interface)的交互。ReportEventParamConverter对象(此处简化):classReportEventParamConverterimplementsParamConverterInterface{/***@paramRequest$request*@paramConfigurationInterface$configu

php - 在 PHPUnit 中实现给定接口(interface)的模拟对象上的未定义方法?

我是单元测试和PHPUnit的新手。我需要一个mock,我可以完全控制它,实现ConfigurationInterface接口(interface)。测试对象是ReportEventParamConverter对象,测试必须检查我的对象和接口(interface)的交互。ReportEventParamConverter对象(此处简化):classReportEventParamConverterimplementsParamConverterInterface{/***@paramRequest$request*@paramConfigurationInterface$configu

php - 您可以使用不同的但 "compatible"签名覆盖接口(interface)方法吗?

考虑以下PHP接口(interface):interfaceItem{//somemethodshere}interfaceSuperItemextendsItem{//someextramethodshere,notdefinedinItem}interfaceCollection{publicfunctionadd(Item$item);//moremethodshere}interfaceSuperCollectionextendsCollection{publicfunctionadd(SuperItem$item);//moremethodsherethat"override

php - 您可以使用不同的但 "compatible"签名覆盖接口(interface)方法吗?

考虑以下PHP接口(interface):interfaceItem{//somemethodshere}interfaceSuperItemextendsItem{//someextramethodshere,notdefinedinItem}interfaceCollection{publicfunctionadd(Item$item);//moremethodshere}interfaceSuperCollectionextendsCollection{publicfunctionadd(SuperItem$item);//moremethodsherethat"override

PHP 接口(interface) : Specify ANY visibility

我正在为一组类使用一个接口(interface)。但是我有一个问题,因为我希望任何visibility在接口(interface)中被允许(即:public、protected和private)。我只需要保护父方法,我需要私有(private)子方法,但我收到错误提示Fatalerror:AccesstypeforinterfacemethodBaz::qux()mustbeomittedin."我尝试在接口(interface)Baz中指定其他可见性方法并删除public,但都失败了。有什么方法可以通过界面实现吗?如果没有,那么有没有办法可以声明它abstract,我也尝试过,但失败

PHP 接口(interface) : Specify ANY visibility

我正在为一组类使用一个接口(interface)。但是我有一个问题,因为我希望任何visibility在接口(interface)中被允许(即:public、protected和private)。我只需要保护父方法,我需要私有(private)子方法,但我收到错误提示Fatalerror:AccesstypeforinterfacemethodBaz::qux()mustbeomittedin."我尝试在接口(interface)Baz中指定其他可见性方法并删除public,但都失败了。有什么方法可以通过界面实现吗?如果没有,那么有没有办法可以声明它abstract,我也尝试过,但失败

php - 带有数组接口(interface)的集合上的 array_map?

我有一个名为Collection的类,它存储相同类型的对象。Collection实现数组接口(interface):Iterator、ArrayAccess、SeekableIterator和Countable。我想将一个Collection对象作为数组参数传递给array_map功能。但这失败并出现错误PHPWarning:array_map():Argument#2shouldbeanarray我能否通过实现其他/更多接口(interface)来实现此目的,以便将Collection对象视为数组? 最佳答案 array_map(

php - 带有数组接口(interface)的集合上的 array_map?

我有一个名为Collection的类,它存储相同类型的对象。Collection实现数组接口(interface):Iterator、ArrayAccess、SeekableIterator和Countable。我想将一个Collection对象作为数组参数传递给array_map功能。但这失败并出现错误PHPWarning:array_map():Argument#2shouldbeanarray我能否通过实现其他/更多接口(interface)来实现此目的,以便将Collection对象视为数组? 最佳答案 array_map(