2013-06-29 4 views
0

У меня проблема с моим собственным классом.Как я могу получить элемент массива из массива?

FileHandler::getFileInfo($_FILES["datei"]) 

возвращение этого массива:

Array ([tmp_name] => D:\xampp\tmp\phpD1C1.tmp [size] => 0.01 [type] => text/plain [error] => 0 [name] => witze.txt) 

Я хочу Присвоить "[ошибка] => 0" на мой шаблон в "функции assignVariables общественных()" Но это не работает.

Что я могу сделать для решения проблемы?

Мой класс:

<?php 
// Imports von den Klassen die benötigt werden 
require_once(INCLUDE_PATH . 'smarty/Smarty.class.php'); 
require_once(CLASS_PATH . 'database.class.php'); 
require_once(CLASS_PATH . 'FileHandler.class.php'); 

class IndexPage extends Smarty { 
    public $templateName = 'index.tpl'; 
    public $query = null; 
    public $fileError = array(); 
    public $sql = array(); 

    public function __construct() { 
     parent::__construct(); 

     $this->template_dir = TEMPLATE_PATH; 
     $this->compile_dir = COMPILE_DIR; 
     $this->config_dir = CONFIG_DIR; 
     $this->cache_dir = CACHE_DIR; 

     $this->assignVariables(); 
     $this->returnInfos(); 
     $this->showTemplate($this->templateName); 
    } 

    public function saveData() { 

    } 

    public function returnInfos() { 
     if(isset($_FILES["datei"])) { 
      $fileError = FileHandler::getFileInfo($_FILES["datei"]); 
     } 
    } 

    public function assignVariables() { 
     print_r($fileError); 
     echo $fileError["error"]; 
     $this->fileError["error"]; 
     self::assign(
      array(
       "array" => array(1,2,3,4), 
       "error" => $this->fileError["error"], 
      ) 
     ); 
    } 

    public function showTemplate($template) { 
     self::display($template); 
    } 
} 
?> 
+0

Вы никогда не назначены '$ this- -> fileError'. Вы назначили локальный var '$ fileError' в' returnInfos() ', но в' assignVariables() 'у вас есть no-op' $ this-> fileError ['error']; 'без какого-либо назначения. –

ответ

3

Есть две проблемы. Сначала находится в конструкторе. Метод returnInfos следует вызывать перед методом assignVariables.

Вторая проблема: вместо свойств вы используете локальные переменные. Эти методы должны выглядеть следующим образом:

public function returnInfos() { 
    if(isset($_FILES["datei"])) { 
     $this->fileError = FileHandler::getFileInfo($_FILES["datei"]); 
    } 
} 

public function assignVariables() { 
    print_r($this->fileError); 
    $this->fileError["error"]; 
    self::assign(
     array(
      "array" => array(1,2,3,4), 
      "error" => $this->fileError["error"], 
     ) 
    ); 
} 
+0

в {$ error} ничего. Но где 0? – Evolutio

+0

отлично работает. Проблема была в моем шаблоне {$ error.1}: / – Evolutio

0

Вы назначаете FileHandler :: GetFileInfo ($ _ FILES [ "Файл"]); к локальной переменной $ fileError в returnInfos(), которая недоступна из assignVariables(). Из этого кода я не вижу, где $ this-> fileError устанавливается

0

вариант один: в returnInfos() заменить $fileError с $this->fileError или

вариант два: сделать задание в returnInfos()

Смежные вопросы