Here is my class property
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'
);
There is a static method in the same class...
public static function is_image($file_path)
{
$imagemagick = $this->my_paths['imagemagick']. '\identify';
echo $imagemagick;
}
Of course this gives me errors like
Fatal error: Using $this when not in object context...
I then tried accessing the property like this self::my_paths['imagemagick']
but that did not help.
How should I handle this?
You need the $ sign in front of the variable/property name, so it becomes:
self::$my_paths['imagemagick']
And my_paths is not declared as static. So you need it to be
private static $my_paths = array(...);
When it does not have the "static" keyword in front of it, it expects to be instantiated in an object.
you cannot access non-static properties in static methods, you either should create an instance of the object in the method or declare the property as static.
If possible, you could make your variable my_path static also.
self::my_paths['imagemagick']
does not work, because the array is private and could not used in a static context.
Make your variable static and it should work.
make it static property
private static $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'
);
and call it like this
self::$my_paths['pngcrush'];