Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] pobieranie danych wewnątrz klasy
piraciq
post 28.01.2009, 23:33:40
Post #1





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


Witam serdecznie

mam taki problem:

prosta klasa do weryfikacji modułów taki schemat

1 pytam bazę po id czy dany moduł jest w bazie
2 sprawdzam czy istnieje
2.a jeśli tak chciałbym pobrać jego nazwę
2.b jeśli nie no to wyjątkiem go :]

jak to rozwiązać abym mógł tego użyć na zasadzie:
  1. <?php
  2. $mod=new mod();
  3. $mod->validModName('mod');
  4. $mod->getModName('mod');
  5. ?>

pozdrawiam

Ten post edytował piraciq 28.01.2009, 23:34:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
blooregard
post 28.01.2009, 23:56:21
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




W uproszczeniu:

  1. <?php
  2. class mod {
  3.  
  4. private $module;
  5. private $error;
  6.  
  7. public function validModName($mod) {
  8. try{
  9.    //sprawdzenie
  10.    //jesli w bazie istnieje, to
  11.    $this->module = $mod;
  12.  return true;
  13. //jesli nie, to
  14.  throw new exception( nie ma );
  15. } catch (Exception e) {
  16.    $this->error = $e->getMessage();
  17. }
  18.  
  19. public function showError() {
  20.   echo $this->error;
  21. }
  22. }
  23.  
  24.  
  25. public function getModName() {
  26. //wyciagniecie z bazy po $this->module
  27.   return wynik_wyciagniecia_z_bazy
  28. }
  29.  
  30.  
  31. }//class
  32.  
  33. $mod=new mod();
  34. $result = $mod->validModName('mod');
  35. if ($result) {
  36.   $mod->getModName();
  37. } else {
  38.   $mod->showError()
  39. ?>


...czy jakos tak. smile.gif

Ten post edytował blooregard 28.01.2009, 23:57:01


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piraciq
post 29.01.2009, 00:07:16
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


ujmę to tak mam coś takiego
  1. <?php
  2. class modules
  3. {
  4.    protected $pdo;
  5.    public function __construct(PDO $pdo)
  6.    {
  7.        $this->pdo=$pdo;
  8.    }
  9.    
  10.    
  11.        private function validateMod($name)
  12.    {
  13.        $sql=$this->pdo->prepare("select * from modules where mod_name=:name limit 1");
  14.        $sql->bindValue(':name',$name);
  15.        $sql->execute();
  16.        if($row=$sql->fetch())
  17.        {
  18.            return true;
  19.        }
  20.        else
  21.        {
  22.            return false;
  23.        }
  24.    }
  25.           public function validateModName($id)
  26.    {
  27.        return $this->validateMod($id);    
  28.    }
  29. /// i teraz jak takie coś zrobić
  30. public function getModName($id)
  31. {
  32. //abym nie musiał wykonywać ponownie zapytania z tego co mi świta to chyba muszę wyżej zwrócić  tablice questionmark.gif
  33. }
  34.  
  35. }
  36. ?>
Go to the top of the page
+Quote Post
blooregard
post 29.01.2009, 00:15:01
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Musisz dodać właściwość w klasie, która będzie przechwowywać wynik zwrócony w metodzie validateMod().

Wtedy każda inna metoda w klasie będzie sobie mogła z tego wyniku korzystać odwołując sie do niego $this->nazwa_wlasciwosci;


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piraciq
post 29.01.2009, 00:17:10
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


A czy mógł byś troszkę jaśniej jak to ugryźć questionmark.gif
Go to the top of the page
+Quote Post
blooregard
post 29.01.2009, 00:26:52
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. <?php
  2. private $result;
  3.  
  4. ...
  5.  
  6.  
  7. private function validateMod($name)
  8.   {
  9.       $sql=$this->pdo->prepare("select * from modules where mod_name=:name limit 1");
  10.       $sql->bindValue(':name',$name);
  11.       $sql->execute();
  12.       if($row=$sql->fetch())
  13.       {
  14.           $this->result = $row;
  15.       }
  16.       else
  17.       {
  18.           $this->result =  false;
  19.       }
  20.   }
  21. ?>


A w tej drugiej metodzie:
  1. <?php
  2. public function getModName()
  3. {
  4.  return $this->result;
  5.  
  6. }
  7. ?>


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
piraciq
post 29.01.2009, 00:43:51
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


Oki fajnie działa dzięki
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: 25.07.2025 - 10:15