Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do filtracji danych
Manwe89
post 15.12.2008, 14:36:23
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 3
Dołączył: 28.10.2008
Skąd: Łuków

Ostrzeżenie: (0%)
-----


Witam. Chciałbym skonstowac klase do filtracji danych wejsciowych. Mialaby miejwiecej taki wyglad:
  1. <?php
  2. class filtracja{
  3.  __construct($tablica){
  4.    foreach($tablica as $key=>$wartosc){
  5.      //tutaj filtracja i problem 1
  6.    }
  7.  }
  8. }
  9.  
  10. $POST = new filtracja($_POST);
  11. ?>


i teraz jak zbudowac wnetrze klasy aby mozna bylo sie odwolywac do wartosci z przefiltowanej tablicy $_POST (czyli $POST) w następujący sposób:
  1. <?php
  2. $POST->klucz
  3. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mike
post 15.12.2008, 14:43:48
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


1. Pomysł klasy o takim działaniu jak proponujesz jest pozbawiony sensu z funkcjonalnego punktu widzenia.
2. Skorzystaj z metod magicznych.
Go to the top of the page
+Quote Post
SirZooro
post 15.12.2008, 14:43:54
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


Musisz zaimplementować w klasie funkcję __get


--------------------
Go to the top of the page
+Quote Post
Manwe89
post 15.12.2008, 15:17:25
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 3
Dołączył: 28.10.2008
Skąd: Łuków

Ostrzeżenie: (0%)
-----


wiem ze to nie jest najlepszy pomysl, ale opiekun projektu zarzyczyl sobie takiej klasy, ktora w taki sposob bedzie zwracala przefiltowane zmienne i nic na to nie poradze ;/ najwieksza moja bolaczka jest sposob w jaki stowrzyc zmienne wew. klasy tak aby ich nazwy odpoiwadaly kluczom z tablic... metody __get() i __set() sa mi znane.

Czy kod, pod wzgledem logicznym jest poprawny??;>

  1. <?php
  2. class A{
  3.  public $zmienna;
  4.  
  5.  function __set($klucz, $wartosc){
  6.    //funckje filtrujaca zapisujace przefiltrowana warosc w zmiennej $save;
  7.    $this->$zmienna[$klucz]=$save;
  8.    }
  9.  
  10.  function __get($klucz){
  11.    if(isset($this->zmienna[$klucz]){
  12.      return $this->zmienna[$klucz];
  13.    }
  14.    else{
  15.      return NULL;
  16.    }
  17.  }
  18.  
  19.  function __construct($tablica){
  20.    foreach($tablica as $key => $value){
  21.      __set($key, $value);
  22.    }
  23.  }
  24.  
  25. }
  26. ?>
Go to the top of the page
+Quote Post
erix
post 15.12.2008, 18:30:21
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
najwieksza moja bolaczka jest sposob w jaki stowrzyc zmienne wew. klasy tak aby ich nazwy odpoiwadaly kluczom z tablic... metody __get() i __set() sa mi znane.

Masz prawie dobrze:
  1. <?php
  2. foreach($tablica as $key => $value){
  3.     __set($key, $value);
  4.   }
  5. ?>

Ale nie podajesz, z jakiego obiektu jest ta metoda. winksmiley.jpg
Poza tym:
  1. <?php
  2. $this->$zmienna[$klucz]=$save;
  3. ?>

Nie zgadzają Ci się nazwy zmiennych.

Ten post edytował erix 15.12.2008, 18:31:07


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Manwe89
post 15.12.2008, 23:54:28
Post #6





Grupa: Zarejestrowani
Postów: 81
Pomógł: 3
Dołączył: 28.10.2008
Skąd: Łuków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $this -> __set($key, $value)
  3. ?>
raczej nie bedzie poprwane. Więc jak to zastąpić?

A co do niezgodnośi zmiennych: $wartosc przechodzi przez takie funkcje jak: addslashes i końcowa wartość zapisywana jest w zmiennej $save.


No i ponawiam pytanie.
  1. <?php
  2. class A{
  3. ...
  4. }
  5.  
  6. $tablica = new A($_POST);
  7. ?>


I w jaki sposób teraz wskazać na klucz 'id' który był uprzednio w tablicy $_POST, a teraz w zmiennej $tablica (zakładając, że prawidłowo skonstuowana jest klasa 'A'. Jeżeli tak nie jest, proszę o pomoc). Przez:
$tablica->id;
questionmark.gif

EDIT------------

Teraz klasa wyglada tak:

  1. <?php
  2. class filtracja{
  3.    public $zmienna;
  4.  
  5.    public function save($klucz, $wartosc){
  6.        if(!get_magic_quotes_gpc()){
  7.            $this->zmienna[$klucz]=addslashes($wartosc);
  8.        }
  9.        else{
  10.            $this->zmienna[$klucz]=$wartosc;
  11.        }
  12.    }
  13.  
  14.    public function __get($klucz){
  15.        if(isset($this->zmienna[$klucz])){
  16.            if(!get_magic_quotes_gpc()){
  17.                return stripcslashes($this->zmienna[$klucz]);
  18.            }else{
  19.                return $this->zmienna[$klucz];
  20.            }
  21.        }
  22.        else{
  23.            return NULL;
  24.        }
  25.    }
  26.  
  27.    public function __construct($tablica){
  28.        foreach($tablica as $key => $value){
  29.            $this -> save($key, $value);
  30.        }
  31.    }
  32. }
  33. ?>


i działa w sposób poprwany smile.gif

Ten post edytował Manwe89 16.12.2008, 12:26:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:12