2016-06-09 91 views
1

请原谅我的错误,我想学习课程。如何从非实例类运行实例的方法/函数?

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

具体做法是:

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

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

行$图像 - >图像::自动旋转($图像)产生的错误,我理解的语法和/或我的理解是错误的。有人可以帮助我理解如何完成这个请吗?

+2

你不需要'$图像 - >'部分 – Fabricator

+1

也应按照惯例进行分类 – Fabricator

回答

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) { 
    ... 
    } 
} 
2

公共静态功能,可直接由classname::funcname被称为被调用,不需要先实例化一个对象。你的情况:

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

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

尝试更换线..

$image -> image::autoRotate($image); 

与此一..

self::autoRotateImage($image);