-
Notifications
You must be signed in to change notification settings - Fork 65
Open
Description
Description
The RawData trait in both v1 and v2 uses mixed type hints (property declaration, parameter, and return type), which were introduced in PHP 8.0. This causes a fatal error on PHP 7.4 despite composer.json declaring "php": "^7.4 || ^8.0".
Affected files
lib/versions/v1/Traits/RawData.phplib/versions/v2/Traits/RawData.php
Error
Argument 1 passed to Pipedrive\versions\v2\Model\DealItem::setRawData() must be an instance of Pipedrive\versions\v2\Traits\mixed, instance of stdClass given, called in vendor/pipedrive/pipedrive/lib/versions/v2/ObjectSerializer.php on line 405
PHP 7.4 interprets mixed as a class name within the current namespace instead of the native type.
Current code (v2 example)
trait RawData
{
private mixed $rawData;
public function getRawData(): mixed
{
return $this->rawData;
}
public function setRawData(mixed $rawData): void
{
$this->rawData = is_object($rawData) && property_exists($rawData, 'data') ? $rawData->data : $rawData;
}
}Suggested fix
Remove mixed type hints to maintain PHP 7.4 compatibility (the @var, @param, and @return PHPDoc annotations already document the types):
trait RawData
{
/** @var mixed */
private $rawData;
/** @return mixed */
public function getRawData()
{
return $this->rawData;
}
/** @param mixed $rawData */
public function setRawData($rawData): void
{
$this->rawData = is_object($rawData) && property_exists($rawData, 'data') ? $rawData->data : $rawData;
}
}Environment
- SDK version: 15.4.0
- PHP version: 7.4.33
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels