Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z ponownym wywołaniem funkcji (redeclare)
Forum PHP.pl > Forum > Przedszkole
dybik
Witam,

być może poruszam temat oczywisty ale nie mogę dać sobie z nim rady , proszę o pomoc:

Mam nadzieję że poniższy opis wystarczy do zobrazowania problemu:

posiadam dwa pola w formularzu:
<input type="file" name="obrazek_1" id="obrazek_1">
<input type="file" name="obrazek_2" id="obrazek_2">

Formularz po wysłaniu uruchamia funkcję:
  1.  
  2. class QuestionnaireController extends Controller{
  3. public function insert() {
  4.  
  5. $model_photo = $this ->loadModel('upload');
  6. $model_photo -> image('obrazek_1);
  7. $model_photo -> image('obrazek_2');
  8.  
  9. }
  10. }


Załadowanie modelu odnosi się do kodu:
  1. class UploadModel extends Model{
  2.  
  3. public function image($obrazek_nazwa) {
  4.  
  5. function resizeImage($field, $cat, $sett, $nazwa_fotki, $crop='medium')
  6. {
  7. }
  8.  
  9. resizeImage('obrazek_1', $cat, $sett, $nazwa_fotki_1, $crop='medium');
  10. }
  11. }
  12.  



Nie chodzi mi o kwestie tego co znajduje się w konkretnych klasach i metodach, a jedynie o kwestię konieczności wielkorotnego wywołania metody image() z różnymi parametrami podawanymi jako $obrazek_nazwa.
Dlaczego kiedy próbuję wywołać metodę image z różnymi parametrami (z poziomu klasy QuestionnaireController) serwer wyrzuca mi błąd "PHP Fatal error: Cannot redeclare resizeImage() (previously declared in /media/sf_htdocs/akuko/model/upload.php:53)" a jeżeli zrobię to do okoła czyli poprzez wywołanie resizeImage z wewnątrz klasy UploadModel a konkretniej w taki sposób:

  1. resizeImage('obrazek_1', $cat, $sett, $nazwa_fotki_1, $crop='medium');
  2. resizeImage('obrazek_2', $cat, $sett, $nazwa_fotki_2, $crop='medium');


wówczas problem nie występuje ?

Być może źle logicznie podchodzę do tematu , jednak czasami zachodzi koniecznośc wywołania dwa razy tej samej metody z innymi parametrami, spoza jej klasy, jak to wówczas zrobić? Czy jedynym rozwiązaniem jest przekazanie tablicy do klasy (w tym przypadku) UploadModel i dopiero w niej wykonanie operacji ?

Jeżeli coś mało jasno opisałem, oczywiście 'dopowiem'.

Z góry dzięki za pomoc w rozwiązaniu tej niejasności smile.gif
nospor
Po grzyba robisz deklaracji funkcji w funkcji.... przeciez odpalajac glowna funkcje poraz kolejny deklarujesz te sama funkcje i masz o tym wyraznie napisane....
dybik
Cytat(nospor @ 24.08.2014, 19:42:01 ) *
Po grzyba robisz deklaracji funkcji w funkcji.... przeciez odpalajac glowna funkcje poraz kolejny deklarujesz te sama funkcje i masz o tym wyraznie napisane....


w klasie: QuestionnaireController

odnosze się do klasy UploadModel -> image()

a dopiero wewnątrz niej jest wywoływana resizeImage()

I chciałbym właśnie poprzez podwójne wywołanie image() przekazać dwa różne parametry. Albo jestem ślepy albo nie widze gdzie dwa razy wywołuję resizeImage podczas jednego wywołania image() :/ Dlatego pytam czy tak w ogóle można zrobić czy nie :/

Chodzi o to że chcę uniknąć wywołania 2x resizeImage z klasy UploadModel a zrobić to już z poziomu Controller'a ...
nospor
Toz tu:
public function image($obrazek_nazwa) {



function resizeImage($field, $cat, $sett, $nazwa_fotki, $crop='medium')

{

}



resizeImage('obrazek_1', $cat, $sett, $nazwa_fotki_1, $crop='medium');

}

w funkcji image deklarujesz funkcje resizeImage..... Ty masz tam ja tylko wywolywac, a nie deklarowac...

A dwa razy deklarujesz, bo dwa razy odpalasz funkcje IMAGE, w ktorej jest deklaracja... Czytaj komunikaty bledy, czytaj co ci ludzie odpisuja i zastanow sie nad tym przez chwile, bo bez powodu ci tego nie pisza
dybik
Okej teraz rozumiem. Dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.