Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Parametry metody w klasie
Forum PHP.pl > Forum > PHP
dyktek
Witam, napisałem sobie klase sterującą skryptem, która otrzymuje obiekt żądania i na jego podstawie uruchamia odpowiednią klasę i odpowiednią metode w klasie. Problem polega na tym że nim wywołam żądaną metodę chciałbym sprawdzić z jakimi parametrami dana metoda jest zdefiniowana w klasie. Potrzebuje to do takiego rozwiązania. Przykładowe żądanie:

?klasa=art&metoda=news&sort=desc&limit=10

no i na tej podstawie wywołana ma zostać klasa art a w niej metoda news, i teraz jakoś trzeba by sprawdzić jakie żądana metoda ma parametry i czy te parametry zostały przesłane w żądaniu.

no chyba że w tymprzypadku pozostaje mi jedynie dopisanie jakiegoś pliku, który przetrzymuje takie informacje ale to byłoby dość dziwne bo klas mam kilka i w kazdej wiele metod.
nospor
Cytat
by sprawdzić jakie żądana metoda ma parametry
To ci sie raczej nie uda. Jakos nie kojarze by istnialo cudo do tego.

A nie mozesz w żadaniu pisac: ?klasa=art&metoda=news&sort=desc&limit=10&par[]=1&par[]=2&par[]=3
a w php:
  1. <?php
  2. print_r($_GET['par']);
  3. ?>

Pod $_GET['par'] bedziesz mial tablice parametrow jakie masz przekazac do funkcji.

ps: swoja drogą to troche nieciekawie masz to zrobione. To kazdy bedzie mogl ci teraz uruchomic dowolna metode w Twoim skrypcie. Wystarczy ze linka spreparuje. Na dodatek metody i klasy beda widoczne (ich nazwy) bo ty takie linki generujesz

edit:
@TomASS nono, dzieki za cynk smile.gif
TomASS
Cytat
Cytat
by sprawdzić jakie żądana metoda ma parametry

To ci sie raczej nie uda. Jakos nie kojarze by istnialo cudo do tego.

Nospor, nie jestem na 100% pewny, ale może klasy Reflection pomogą:
Cytat
Dzięki nim można odczytać dowolną informację na temat klasy lub metody.
dyktek
w rzeczywistości jest to napisane nieco inaczej, jako przykład tak napisałem żeby jasno naświetlić problem.

ostatecznie wydaje mi się że lepszym rozwiązaniem będzie coś takiego że na podstawie żądania podnoszony jest obiekt, który jest modelem np. newsów czyli np tak.

  1. <?php
  2. class Load
  3. {
  4.  
  5. private $sModule;
  6. private $oReq
  7.  
  8. public __construct( $oRequest ){
  9.  
  10. $this -> oReq = $oRequest
  11. $this -> sModule = $oRequest -> get_req('module', 'get');
  12. }
  13.  
  14. public function zaladuj(){
  15.  
  16. //sprawdz czy żądanie moze zostać obsłużone
  17.  
  18. return new $this -> sModule();
  19.  
  20. }
  21. }
  22. ?>


i teraz obiekt newsów jest podniesiony wiec pozostaje wyświetlić widok newsów. takie rozwiązanie chyba będzie lepsze od tego pierwszego bo nie muszę się martwić o sprawdzanie parametrów metody ponieważ load wywoła obiekt a widok obsłuży resztę żądania czyli w widoku zostanie wywołana odpowiednia metoda z obiektu, który będzie modelem newsów. chyba nie zamotałem aż tak bardzo 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.