如何从非实例类的实例上运行方法/函数?

时间:2016-06-09 17:12:14

标签: php class

请原谅任何错误,我正在努力学习课程。

一旦对象被实例化,我就会明白该类的方法对我来说是可用的。我的问题是,我如何能够从除了所述对象上的实例化类之外的类中运行方法?

具体做法是:

class image {
    public static function create() {
        $image = new Imagick($file);
        $image -> image::autoRotate($image);
        ...
    }

    public static function autoRotate($image) {
        ...
    }
}

行$ image - > image :: autoRotate($ image)产生错误,我理解语法和/或我的理解是错误的。有人可以帮助我理解如何做到这一点吗?

3 个答案:

答案 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);