Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie obiektu klasy A, wewnątrz metody klasy A
Forum PHP.pl > Forum > PHP > Object-oriented programming
loko87
Czy takie działanie jest dozwolone w PHPie?

Dla wyjaśnienia - mam metode klasy wysylającą zapytanie sqlowskie UPDATE, wykorzystując atrybuty obiektu. Przed tym chciałbym pobrać poprzednie dane zmienianego rekordu w tej samej metodzie - najłatwiej byłoby mi stworzyć obiekt tej klasy, do którego miałyby być zapisane poprzednie dane.

Z góry dziękuje za odpowiedź
pozdraiwam
marins
Co nie jest zabronione - jest możliwe.

  1. <?
  2. class obiekt {
  3. private $data = array();
  4. private $id;
  5.  
  6. public function set_id($id) {
  7. $this->id = (int) $id;
  8. return $this;
  9. }
  10. public function load_data() {
  11. $sql = 'SELECT * FROM `tabela` LIMIT 1';
  12. $res = $this->db->query ( $sql );
  13.  
  14. if ( $res->num_rows() == 0 ) {
  15. return;
  16. }
  17. $this->data = $res->row();
  18. return $this;
  19. }
  20. public function update() {
  21. $object_before = new __CLASS__();
  22. $object_before->set_id ( $this->id )->load_data();
  23.  
  24. //update rekordku na podstawie zmiennych w data
  25. $this->db
  26. ->set ( $this->data )
  27. ->update ('tabela');
  28. }
  29. }
loko87
EDIT: już nieważne. Sprawdziłem i oba zapisy są poprawne smile.gif

Dziękuje uprzejmie... A co do składni:

Czyli mając daną klasę:
  1. Class Kredyt {...


Tworzę obiekt wewnątrz tej klasy konstruktorem
  1. $kredyt_przed_modyfikacja= new __CLASS__();


zamiast

  1. $kredyt_przed_modyfikacja= new Kredyt();


czy oba kody będą poprawne?
marins
Oba są poprawne, ale stosując __CLASS__ będzie on pobierał aktualną nazwę klasy.

Czyli zmieniając tylko nazwę klasy w jednym miejscu - nie musisz się martwić o jej zmianę w innych.
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.