createPartialMock( $serviceDefinition['class'], isset($serviceDefinition['methods']) ?array_keys($serviceDefinition['methods']):[] ); if(isset($serviceDefinition['methods'])) foreach ($serviceDefinition['methods'] as $mName=>$mVal){ $mockingService->method($mName)->willReturn($mVal); } if(isset($serviceDefinition['subServices'])) foreach ($serviceDefinition['subServices'] as $subService){ $mockingService->instant( $subService['serviceName'], ($subServiceMock=function()use($subService){ $subServiceMock=$this->createPartialMock( $subService['class'], array_keys($subService['methods']) ); if(isset($subService['methods'])) foreach ($subService['methods'] as $methodName=>$methodVal){ $subServiceMock->method($methodName)->willReturn($methodVal); } return $subServiceMock; })() ); } return $mockingService; } function getTargetIdCirculately($targetArr, $additionMark='', $idName='id'){ $amount = count($targetArr); $json_encode = json_encode($targetArr); $iName = 'i_' . md5($json_encode . $additionMark); if(!isset($this->data[$iName])){ $this->data[$iName]=$amount; } $this->data[$iName]++; if($this->data[$iName]>=$this->batchAmount) $this->data[$iName]=0; return $targetArr[$this->data[$iName]][$idName]; } function getIntegerIncreasely($markStr): int { $iName = 'i_' . $markStr; if(!isset($this->data[$iName])){ $this->data[$iName]=-1; } $this->data[$iName]++; return $this->data[$iName]; } function makeArray($amount,$array) { $resultArrays=[]; for($i=0;$i<$amount;$i++){ $newArr=[]; foreach ($array as $key=>$item){ if(gettype($item)=='object'){ $newArr[$key]=$item(); }else{ $newArr[$key]=$item; } } $resultArrays[]= $newArr; } return $resultArrays; } }