googleapis / googleapis/google-api-php-client-services
Proper PHPDoc for nullable class properties and method returns
- Dominant language
- PHP
- Stars
- 1.3k
- Forks
- 320
- Avg merge
- 2h 32m
- Merged PRs (30d)
- 193
Description
Related / follow-up of https://github.com/googleapis/google-api-php-client-services/issues/172
**Is your feature request related to a problem? Please describe.**
Currently some classes have properties that
- can be NULL
- have PHPDoc which suggests it can not be NULL
For example:
https://github.com/googleapis/google-api-php-client-services/blob/dbd60410b289374a44fe91f3556d463b55c10246/src/Calendar/EventDateTime.php#L23-L25
And https://github.com/googleapis/google-api-php-client-services/blob/dbd60410b289374a44fe91f3556d463b55c10246/src/Calendar/EventDateTime.php#L42-L48
When using static analysis using (for example) PHPStan, on code like this:
```php
//All-day event has the date property set
if (is_string( $calendarEvent->getStart()->date)) {
//Process all-day event
}
} elseif (is_string( $calendarEvent->getStart()->dateTime)) {
//event is not all-day-even
}
```
This will result in an error like:
```php
Elseif branch is unreachable because previous condition is always true.
```
**Describe the solution you'd like**
It would be better to use PHPDoc to indicate that the property can be null, for example
```php
/**
* @var string|null
*/
public $date;
/**
* @return string|null
*/
public function getDate()
{
return $this->date;
}
```
**Describe alternatives you've considered**
For PHP versions that support typed properties and return types, the PHPDoc can be omitted:
```php
public ?string $date = null;
public function getDate() : ?string
{
return $this->date;
}
```
But this library supports PHP `>=5.6`, so this is probably not an option yet: https://github.com/googleapis/google-api-php-client-services/blob/main/composer.json#L9
Contributor guide
Assessment
This issue has not been assessed yet.