2016-06-09 166 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);