#Correctly infere types of return stmt of my Service via a facade

2 messages · Page 1 of 1 (latest)

maiden otter
#

So I have created a singelton called SettingService which I am registering inside a ServiceProvider.

    public function register()
    {
        $this->app->singleton('WDSettingService', function ($app) {
            return new SettingService();
        });

In addtion I created a Facade for easier use:

use Illuminate\Support\Facades\Facade;

/**
 * @method static \MyPackage\Settings\Services\SettingService getSettingObjects()
 * @method static \MyPackage\Settings\Services\SettingService getSetting()
 * @method static \MyPackage\Settings\Services\SettingService getSettings()
 */
class Setting extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'MyPackageSettingService';
    }
}

Now the issue is if I invoke getSettingObjects everything works fine. But my intelephense complains about the return type (see picture).

    /** @param 'obstruct'|'clear' $passwordAs */
    public function getSettingObjects($passwordAs = 'clear'): array
    {
        if (!$this->settingObjects) {
            $this->setSettingObjects();
        }
        if ($passwordAs === 'clear') {
            return $this->settingObjects;
        }

        if ($passwordAs === 'obstruct') {
            return  $this->obstructPassword($this->settingObjects);
        }

        return [];
    }
#

Okay It seems I missunderstood and this doc typing here is the way?