一旦对象被实例化,我就会明白该类的方法对我来说是可用的。我的问题是,我如何能够从除了所述对象上的实例化类之外的类中运行方法?
具体做法是:
class image {
public static function create() {
$image = new Imagick($file);
$image -> image::autoRotate($image);
...
}
public static function autoRotate($image) {
...
}
}
行$ image - > image :: autoRotate($ image)产生错误,我理解语法和/或我的理解是错误的。有人可以帮助我理解如何做到这一点吗?
答案 0 :(得分:2)
因为image
类实际上不是$image
对象的属性,所以您不需要使用$image ->
语法来执行该操作。由于autoRotate()
是静态函数,因此只能从类访问器image::autoRotate($image);
class image {
public static function create() {
$image = new Imagick($file);
image::autoRotate($image); // removed $image ->
...
}
public static function autoRotate($image) {
...
}
}
答案 1 :(得分:2)
公共静态函数可以由classname::funcname
直接调用,不需要首先实例化对象。在你的情况下:
class image {
public static function create() {
$image = new Imagick($file);
image::autoRotate($image);
...
}
public static function autoRotate($image) {
...
}
}
答案 2 :(得分:1)
尝试替换线..
$image -> image::autoRotate($image);
用这个......
self::autoRotateImage($image);