• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

__get i __set w klasie z PDO

0 głosów
273 wizyt
pytanie zadane 27 lipca 2015 w PHP przez makoso Mądrala (7,380 p.)
witam spodobała mi się funkcja __get i wszystko ładnie pięknie śmiga z pdo tylko że w przypadku gdy używam PDO i chcę zrobić funkcje __set to zwraca mi błąd że objekt pdo nie może być skonwertowany do stringa czy jakoś tak zna ktoś sposób aby to obejsc?

 

póki co stosuje oddzielną klasę dla __set i wszystko działa w niej :)

i jeszcze takie pytanie poboczne czy mogę sobie jakoś zagnieździć w __set kolejną funkcję __ set czy musiałbym do tego używać w pierwszym __set tworzę nowy uchwyt do klasy tam kolejny set itd...

czyli mógłbym później w tym kodzie używac sobie np:

$update->tabela=>kolumna=$dane_do_wstawienia;

teraz używam tak że mam $update->tabela='kolumna__dane'; i daje to explode i dalej sql

2 odpowiedzi

+2 głosów
odpowiedź 27 lipca 2015 przez Comandeer Guru (608,940 p.)
Skomplikowana logika w metodach magicznych? Gdzieś właśnie umarł jednorożec…

Nie, po prostu nie. To jest skrajnie zły pomysł, który szybko odbije Ci się czkawką. Sama próba debugowania błędów w takim kodzie to piekło.
0 głosów
odpowiedź 27 lipca 2015 przez Boshi VIP (100,240 p.)
Zaczynasz coś kombinowować jeżeli chcesz zagnieżdżać metody magiczne które de facto mają swoje spore wady i nie zawsze warto z nich korzystać.

pokaż kod.
komentarz 27 lipca 2015 przez makoso Mądrala (7,380 p.)

znaczy opisze Ci co chciałem osiągnąć w zapytaniu 

function __get($table){
        $Query=$this->db->prepare('SELECT * FROM
                            '.$table.'
                            WHERE id =?
                            LIMIT 1');
        $Query->bindParam(1, $this->UserId, PDO::PARAM_INT);
        $Query->execute();
        $Ret=$Query->fetch(PDO::FETCH_OBJ);
        if($Query->rowCount() > 0){
            return $Ret;
        }
        else {
            return false;
        }

 

//I potem używam 
$User=new UserInfoStats($db,$data->id);
$User->surowce->drewno;
//i zwraca prawidłowo powiedzmy 300 drewna

natomiast chciałbym osiągnąć coś takiego że jeżeli ja tą wartość przyrównam to wykona się zapytanie i zaktualizuje mi dane w sql

$User->surowce->drewno=200;
//chce aby od teraz user miał 200 drewna 

 

oczywiście mogę to zrobić jakąć funkcją ale jakoś tak bym chciał jak się nie da to trudno ale pokombinować zawsze można :)

Podobne pytania

0 głosów
0 odpowiedzi 175 wizyt
pytanie zadane 11 grudnia 2018 w PHP przez s4bek Użytkownik (600 p.)
0 głosów
0 odpowiedzi 198 wizyt
pytanie zadane 5 grudnia 2018 w PHP przez s4bek Użytkownik (600 p.)
–1 głos
1 odpowiedź 571 wizyt

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,369 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...