2010-03-04 4 views
2

J'essaie d'étendre la bibliothèque Upload dans CodeIgniter. J'ai essayé toute la matinée, après diverses tuts et messages sur le forum, mais je n'arrive pas à le faire fonctionner.Bibliothèque d'extension de problème dans CodeIgniter

Si j'ajoute la fonction que je veux directement dans la bibliothèque Upload.php, cela fonctionne - mais je sais que ce n'est pas la bonne façon, et je veux le faire correctement depuis que je le fais.

Voici le contenu de l'extension [système/application/bibliothèques/MY_Upload.php]:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Upload extends Upload{ 
function MY_Upload(){ 
    parent::Upload(); 
} 
    function mupload($configs,$files){ 
    if(count($configs) != count($files)){ 
     return 'array_count_wrong'; 
    } 
$retArr=array(); 
    for($i=0, $j = count($files);$i<$j;$i++){ 
     $this->initialize($configs[$i]); 
     if(!$this->do_upload($files[$i])){ 
      array_push($retArr,$this->display_errors()); 
     }else{ 
      array_push($retArr,'OK'); 
     } 
    } 
    return($retArr); 
} 

>

et le code du contrôleur concerné:

$this->load->library('upload'); 
$messages=$this->upload->mupload($config,$files); 

Il tombe en panne sans indication de pourquoi.

Qu'est-ce que je fais mal?

Thx.

Répondre

2

manquant une saloperie } à la fin de l'extension

: '(

Je souhaite vraiment vraiment vraiment il y avait un moyen d'obtenir des messages d'erreur plus d'information (ou tout message à tous) quand les choses ne ...

+2

Vous pouvez activer le rapport d'erreurs PHP (http://www.php.net/manual/fr/errorfunc.configuration.php#ini.error-reporting) dans un environnement de développement; De même, l'utilisation d'un bon éditeur ou d'un IDE avec une coloration syntaxique correcte vous aidera à détecter les erreurs de syntaxe comme celle que vous avez décrite. – gpmcadam

+0

Rapport d'erreur est définitivement sur. Réglez sur 11, même. J'utilise TextMate (que j'ai lu), mais il ne semble pas mettre en évidence les blocs, seulement les fonctions, les vars, les tableaux, etc. Il clignote si vous essayez de mettre un crochet de fermeture sans parenthèse d'ouverture correspondante, mais pas vraiment aider lorsqu'il s'agit de 10k lignes de code. Merci. – stormdrain

+0

Vous pourriez ajouter un autre éditeur, comme vim, encore mieux. L'analyse statique de vim est plus puissante: http://stackoverflow.com/questions/378959/is-there-a-static-code-analyzer-like-lint-for-php-files. – g33kz0r

2

quelques bits supplémentaires de conseils ici.

  1. Vous devez étendre de CI_Upload pas Ajouter
  2. Vous avez seulement besoin d'ajouter un contructor avec parent :: CI_Upload; si vous faites quelque chose dans votre contrôleur. Supprimez la fonction MY_Upload() car vous n'en avez pas besoin. :-)

Heureux que vous avez résolu votre problème principal si!

+0

En effet. J'avais le CI_ là la plupart du temps, mais pas quand j'ai copié le code pour coller ici. Il est là maintenant :) J'ai également supprimé la fonction MY_Upload. Bien que je ne sois pas clair pourquoi ... Vous avez dit "si vous êtes en train de faire quelque chose dans votre contrôleur". Je pense que je fais des choses dans mon contrôleur, n'est-ce pas? Voulez-vous dire appeler des fonctions dans la classe parent directement dans le contrôleur? THX. – stormdrain

+0

Désolé remplacer le contrôleur de mot avec le constructeur. Fondamentalement, si vous créez votre propre constructeur, vous devez d'abord caler le constructeur des parents, car lorsque vous créez une fonction dans l'enfant d'une classe héritée, vous la remplacez essentiellement. Si vous n'utilisez pas de constructeur dans votre classe MY_, vous n'avez pas besoin de mettre un constructeur vide. :-) –

Questions connexes