Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tworzenie obiektu klasy A, wewnątrz metody klasy A
loko87
post 30.08.2011, 18:48:08
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 28.08.2011

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


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
Go to the top of the page
+Quote Post
marins
post 30.08.2011, 19:34:05
Post #2





Grupa: Zarejestrowani
Postów: 47
Pomógł: 4
Dołączył: 12.07.2003

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


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. }
Go to the top of the page
+Quote Post
loko87
post 30.08.2011, 19:43:46
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 28.08.2011

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


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?

Ten post edytował loko87 30.08.2011, 19:58:53
Go to the top of the page
+Quote Post
marins
post 30.08.2011, 22:12:03
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 4
Dołączył: 12.07.2003

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


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.
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: 19.07.2025 - 17:38