Zweimaliger Aufruf einer Methode scheitert


tklustig

Erfahrenes Mitglied
#1
Hallo Leute, bin total verwirrt. Folgende uploadMethode ruft zweimal eine gekapselte Methode auf, die ein Array zurück gibt. Das erste Mal klappt ohne Probleme ,das zweite mal wird NULL zurück gegeben. Woran könnte das nur liegen?
Hier zunächst der UploadCode
PHP:
 public function upload($IdOfFk, $FKName, $model, $model_e, $anhangArt, $LocalDirectory, $RenderBackInCaseOfError) {
$ftp = new FTPZugang();
.
.
$ftp->FTP_Kontakieren($fk, $RenderBackInCaseOfError);
        foreach ($this->attachement as $uploaded_file) {
            $umlaute = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
            $ersetzen = array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss");
            $uploaded_file->name = str_replace($umlaute, $ersetzen, $uploaded_file->name);
            $uploaded_file->saveAs(Yii::getAlias('@uploading') . '/' . $uploaded_file->name);
            $localFile = $uploaded_file->name;
            $ftp->DateiHochloaden($IdOfFk, $RenderBackInCaseOfError, $ftp, $localFile, $LocalDirectory);
            $x++;
        }
.
.
Hier der Code der Methode FTP_Kontaktieren der Klasse FTPZugang. Der Aufruf von GetZugangsadten klappt!
PHP:
    public function FTP_Kontakieren($id, $render = NULL) {
        $basis = $this->GetZugangsDaten($id, $render); // dieser erste Aufruf gelingt
        $host = $basis[1];
        $username = $basis[2];
        $password = $basis[3];
        return $this->connect($host)->login($username, $password);
    }
Hier der Code der Methode DateiHochloaden der Klasse FTPZugang. Der Aufruf von GetZugangsdaten klappt hier nicht!!
PHP:
public function DateiHochloaden($id, $render = NULL, $connection, $localFile, $LocalDirectory) {
        $session = new Session();
        $txt = '/txt/';
            $basis = $this->GetZugangsDaten($id, $render);
            var_dump($basis); //var_dump() ist hier NULL --WARUM???
            die();
            $SourceDirectory = $basis[4];
Ach ja, fast vergessen:eek: Hier noch der Code der Methode Zugangdaten, die sich nur einmal aufrufen lässt
PHP:
    private function GetZugangsDaten($id = NULL, $render = NULL) {
        if (empty($id)) {
            $model_folder = Dateianhang::find()
                    ->leftJoin('e_dateianhang', 'e_dateianhang.id=dateianhang.id_e_dateianhang');
            $ausgabe = "Script wurde in der Klasse FTPZugang innerhalb der Methode GetZugangsdaten() angehalten...";
            print_r($ausgabe);
            die();
        } else
            $model_folder = Dateianhang::find()
                            ->leftJoin('e_dateianhang', 'e_dateianhang.id=dateianhang.id_e_dateianhang')
                            ->where(['e_dateianhang.id' => $id])->one();
        if ($model_folder != NULL) {
            $folder = $this->GetSpeicherOrt($model_folder, $render);
            $extract_outer = explode("'", $folder);
            $extract_inner = explode(";", $extract_outer[0]);
            var_dump($extract_inner);// gibt beim zweiten Aufruf NULL zurück --WARUM??
            return $extract_inner;
        }
    }
 
Zuletzt bearbeitet:

Kalito

Erfahrenes Mitglied
#2
puh. Spontan würde ich sagen, dass das Problem an
PHP:
$this->GetSpeicherOrt($model_folder, $render)
liegt. Was steht den in der Funktion bzw. was sagt var_dump bei den beiden Parametern?
 

tklustig

Erfahrenes Mitglied
#3
bin dem Problem zwischenzeitlich auf die Spur gekommen. Der fehlerhafte Aufruf lag bei
PHP:
$ftp->DateiHochloaden($IdOfFk, $RenderBackInCaseOfError, $ftp, $localFile, $LocalDirectory);
Der übergebene Parameter $IdOfFk war invalide und verursachte den Bug. Ein var_dump auf $IdOfFk brachte Klarheit...
 

Neue Beiträge