如何在同一模型laravel中的另一个静态方法中调用静态方法

时间:2018-01-29 03:43:59

标签: php laravel oop laravel-5

我创建了一个静态方法来帮助我了解用户上传的移动操作系统应用。

public static function knowAppPlatform($file){
    $extension=  $file->getClientOriginalExtension();
    if ($extension=== "apk"){

        return 'android';
    }
    elseif ($extension=== "appx"){

        return 'windows';
    }
    elseif ($extension=== "ipa"){

        return 'ios';
    }
}

然后我试图在同一个模型中的另一个方法中调用相同的静态方法。但它一直返回null,它在模型外部工作正常但不在内部。

 public static function uploadScreenshot($file){
    $platform = static::knowAppPlatform($file);
     dd($platform);
    $name = Auth::id() . 'screenshots' . time(). '.' . $file->getClientOriginalExtension();
    $name = $file->storeAs('mobileApps/screenshots', $name);
    return $name;
}

我在这里研究了堆栈溢出并实现了一些答案,但没有显示。

我试过了,

$platform = static::knowAppPlatform($file);
$platform = self::knowAppPlatform($file);
$platform = \App\model\students\App::knowAppPlatform($file);

2 个答案:

答案 0 :(得分:0)

调用静态方法的正确方法是使用self关键字 self::knowAppPlatform($file); ,但是你说它返回null。我建议你尝试一个调试器来解决这个问题。

答案 1 :(得分:0)

显然我传递了错误的文件类型作为参数,我传入了'png'图像类型而不是移动应用程序。

我使用了modelName::methodName并使用了,上面也有效......

self::knowAppPlatform($file);
static::knowAppPlatform($file);
App::knowAppPlatform($file);