Php 如何在同一模型中的另一个静态方法中调用静态方法laravel
我创建了一个静态方法来帮助我了解用户上传的移动操作系统应用程序Php 如何在同一模型中的另一个静态方法中调用静态方法laravel,php,laravel,oop,laravel-5,Php,Laravel,Oop,Laravel 5,我创建了一个静态方法来帮助我了解用户上传的移动操作系统应用程序 public static function knowAppPlatform($file){ $extension= $file->getClientOriginalExtension(); if ($extension=== "apk"){ return 'android'; } elseif ($extension=== "appx"){ return
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);
调用静态方法的正确方法是使用self关键字
self::knowAppPlatform($file)但是你说它返回null。我建议您尝试使用调试器来解决此问题。显然,我传递了错误的文件类型作为参数,我传递了“png”图像类型,而不是移动应用程序
我使用了modelName::methodName
,而且它很有效,上面的方法也很有效
self::knowAppPlatform($file);
static::knowAppPlatform($file);
App::knowAppPlatform($file);
当$extension
不是apk
、appx
或ipa
中的任何一个时,knowAppPlatform
可以返回null
。你确定这是本案中的一件吗?使用调试器并逐行执行可能会有所帮助,或者(技术含量较低)打印出$file
和$extension
是什么;这是一个APK文件,所以它应该返回真的,我在模型外测试了它,它工作得很好@tremby@RaghbendraNayakSystematix已经试过了,但是没有show@Akunne,为什么一切都会变成现实?让它var_dump
说出$file
和$extension
是什么,并让我们知道。谢谢M'Baku,这是在PHP8和Laravel8上工作的。