2017-04-11 4 views
0

Ich versuche, die Verot-Bildbearbeitungsklasse an eine benutzerdefinierte Klasse übergeben, die ich erstellt habe, aber es scheint nicht zu funktionieren, es tut nichts, wenn ich versuche, es auszuführen. Wie übergebe ich die Verot-Bildklasse an meine Klasse?PHP - Wie Klasse an eine andere Klassenmethode übergeben wird

//Edit.php 
//Now I run my class 
$process = new ProcessEventLogo(); 
$process->editEventLogo($event_id,$file_ext,$savepath,new upload('')); 

Hier ist meine benutzerdefinierte Klasse. Ich dachte, indem ich upload ('') auf diese Methode ausführen würde, übergebe ich eine Kopie der Verot-Upload-Klasse, auf die ich in meiner benutzerdefinierten Klassenmethode zugreifen kann. Aber wenn ich es ausführe, kommt es nicht einmal über den $ mainimg-> hochgeladenen Pfad hinaus. Tatsächlich $ mainimg = $ fileupload-> upload ($ savefile); gibt NULL zurück, wenn ich es var_dump. Was mache ich falsch?

Antwort

0

Es scheint, dass dies funktioniert, kann jemand überprüfen, ob dies der richtige Weg ist, dies zu tun? Also statt dieser Zeile:

//We check to see if the event image is there 
$mainimg = $fileupload->upload($savefile); 

Dies funktionierte.

//We check to see if the event image is there 
$mainimg = new $fileupload($savefile); 
+0

nicht wirklich sicher und vielleicht bin ich falsch, aber es scheint, dass, wenn Sie pa ss zuerst "new upload ('')" in Ihrer Funktion erstellen Sie eine Instanz der Klasse, die versucht, eine Datei hochzuladen, die nicht gefunden wurde, in diesem Fall '' (in __construct of uploadclass "https://github.com) /verot/class.upload.php/blob/master/src/class.upload.php ") und im zweiten Aufruf" new $ fileupload ($ savefile); " Sie erstellen eine neue Instanz mit einem gültigen Dateinamen –

+0

@ mr.void Richtig, also wie sonst würde ich diese Klasse an meine benutzerdefinierte Klassenmethode übergeben? Scheint so, als wäre das der falsche Weg. – John

0

@ mr.void Recht, so wie sonst würde ich gebe diese Klasse zu meiner benutzerdefinierten Klasse Methode? Nur scheint, wie dies der falsche Weg ist

Ich denke, ein wenig Fabrik Schreiben der richtige Weg dafür ist:

class uploadFac { 

    public function getUploadInstance($file) 
    { 
     return new upload($file) 
    } 

} 

Und es wie folgt verwenden:

$uplFac = new uploadFac(); 
$process = new ProcessEventLogo(); 
$process->editEventLogo($event_id,$file_ext,$savepath,$uplFac); 

und in der Methode:

public function editEventLogo($eventid,$fext,$url,$savepath,$uplFac) 
    { 
     //We generate the file name to save this image to 
     $savefile = $savepath .'event_' .$eventid .'.' .$fext; 
     $mainimg = $uplFac->getUploadInstance($savefile); 
Verwandte Themen