googleapis / googleapis/google-api-php-client-services
Proper PHPDoc for nullable class properties and method returns
- Vorherrschende Sprache
- PHP
- Sterne
- 1.3k
- Forks
- 320
- Ø Merge
- 2 Std. 32 Min.
- Gemergte PRs (30 T.)
- 193
Beschreibung
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
Beitragsleitfaden
Rechercherichtung
Start with src/Calendar/EventDateTime.php at the linked property and getter examples, then review the related issue 172 and the PHP version constraint in composer.json. Check how nullable properties and returns are documented across the affected classes, and use PHPStan or equivalent static analysis to verify that valid nullable branches are no longer reported as unreachable.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- api, developer-experience
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100