使用 PHP 访问静态方法中的 Class 属性的最佳方式

2022-08-30 18:19:41

这是我的类属性

private $my_paths = array(
        'imagemagick' => 'E:\Server\_ImageOptimize\ImageMagick',
        'pngcrush' => 'E:\Server\_ImageOptimize\pngCrush\pngcrush.exe',
        'jpegtran' => 'E:\Server\_ImageOptimize\jpegtran\jpegtran.exe',
        'gifsicle' => 'E:\Server\_ImageOptimize\gifsicle\gifsicle.exe',
        'pngquant' => 'E:\Server\_ImageOptimize\pngquant\pngquant.exe',
        'pngout' => 'E:\Server\_ImageOptimize\pngout\pngout.exe'
);

同一类中有一个静态方法...

public static function is_image($file_path)
{

    $imagemagick = $this->my_paths['imagemagick']. '\identify';

    echo $imagemagick;
}

当然,这给了我这样的错误

Fatal error: Using $this when not in object context...

然后我试着像这样进入酒店,但这没有帮助。self::my_paths['imagemagick']

我应该如何处理这个问题?


答案 1

您需要在变量/属性名称前面使用符号,因此它变为:$

self::$my_paths['imagemagick']

并且不声明为静态。所以你需要它my_paths

private static $my_paths = array(...);

当它前面没有关键字时,它期望在对象中实例化。static


答案 2

不能在静态方法中访问非静态属性,应该在方法中创建对象的实例,或者将该属性声明为静态。


推荐