Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlenie wyniku z klasy z innego pliku
szczypior
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Witajcie (IMG:style_emoticons/default/smile.gif)

Jestem na początku, już wiem że bolesnej drogi, z obiektowym php. Nie mogę sobie poradzić z wyświetlaniem wyniku z klasy, która jest includowana do pliku wywołującym ją. Tzn, kod gdy jest w całości w jednym pliku działa
  1. class Bazowa
  2.  
  3. {
  4.  
  5. private $napis;
  6.  
  7. function __construct() {
  8.  
  9. $this->napis = "Napis dodany w klasie bazowej";
  10.  
  11. }
  12.  
  13. function podajNapis() {
  14.  
  15. return $this->napis;
  16.  
  17. }
  18.  
  19. }
  20.  
  21.  
  22.  
  23. class Pochodna extends Bazowa
  24.  
  25. {
  26.  
  27. function podajNapis() {
  28.  
  29. $str = parent::podajNapis();
  30.  
  31. print("Dostęp z klasy Pochodna: '$str'");
  32.  
  33. }
  34.  
  35. }
  36.  
  37. $obiekt = new Pochodna();
  38.  
  39. $obiekt->podajNapis();

ale gdy podzielę kod następująco:
  1. class Bazowa
  2.  
  3. {
  4.  
  5. private $napis;
  6.  
  7. function __construct() {
  8.  
  9. $this->napis = "Napis dodany w klasie bazowej";
  10.  
  11. }
  12.  
  13. function podajNapis() {
  14.  
  15. return $this->napis;
  16.  
  17. }
  18.  
  19. }
  20.  
  21.  
  22.  
  23. class Pochodna extends Bazowa
  24.  
  25. {
  26.  
  27. function podajNapis() {
  28.  
  29. $str = parent::podajNapis();
  30.  
  31. print("Dostęp z klasy Pochodna: '$str'");
  32.  
  33. }
  34.  
  35. }

  1. include 'sciezka/do/powyzszego/pliku.php';
  2.  
  3. $obiekt = new Pochodna();
  4.  
  5. $obiekt->podajNapis();


niestety nie wyświetla się wynik. Dlaczego tak się dzieje?

Z góry dzięki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Włącz raportowanie błędów tj. dodaj error_reporting(E_ALL); w 1 linijce i przeczytaj błąd.
Go to the top of the page
+Quote Post
szczypior
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Dopisałem na początku
  1. ini_set('display_errors', 1);
  2. ini_set('display_startup_errors', 1);

i nic nie pokazuje. Ani błędu, ani wyniku.
Go to the top of the page
+Quote Post
markuz
post
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


To zrób var_export($obiekt) oraz var_export($obiekt->podajNapis()); i zrób też echo 5; na początku żeby sprawdzić czy w ogóle dobry plik odpalasz.
Go to the top of the page
+Quote Post
szczypior
post
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Pliki na pewno odpalam ok, bo test z echo na początku zadziałał.

var_exporty zupełnie nic nie pokazują (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
markuz
post
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


zrób echo po każdej instrukcji, wklej zawartość całego pliku i wynik
Go to the top of the page
+Quote Post
szczypior
post
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Dzięki za wskazówki, udało mi się ten problem pokonać (IMG:style_emoticons/default/smile.gif) Teraz natomiast mam zagwostkę, bo chyba moje połączenie z bazą danych nie jest widoczne w klasie, która tego połączenia potrzebuje.

index.php
  1. ini_set('display_errors', 1);
  2. ini_set('display_startup_errors', 1);
  3.  
  4. include 'class/login.class.php';
  5.  
  6. $core = new Core;
  7. $pdo = $core -> DBconnection();
  8.  
  9. $objLogin = new Login();
  10.  
  11. if ($objLogin->userLogin("login_użytkownika", "hasło_użytkownika") == true) {
  12. echo "Użytkownik został zalogowany do system!";
  13. } else {
  14. echo "Użytkownik nie został zalogowany. Błędne hasło lub login użytkownika!";
  15. }


login.class.php
  1. ini_set('display_errors', 1);
  2. ini_set('display_startup_errors', 1);
  3.  
  4. include 'class/core.class.php';
  5.  
  6. class Login extends Core {
  7.  
  8. // Przechowuje informację, czy użytkownik jest zalogowany (true), czy nie (false)
  9. protected $logged_in;
  10. // Identyfikator zalogowanego użytkownika
  11. protected $user_id;
  12. // Login użytkownika
  13. protected $login;
  14. // Przechowuje hasło użytkownika
  15. protected $md5_password;
  16.  
  17.  
  18. public function __construct() {
  19. parent::__construct();
  20. }
  21.  
  22. public function userLogin($str_username, $str_password) {
  23.  
  24. $this->login = addslashes($str_username);
  25. $this->md5_password = md5($str_password);
  26. $_SESSION['username'] = $str_username;
  27. $_SESSION['password'] = $this->md5_password;
  28.  
  29.  
  30. $statement = $this->db->prepare('SELECT id, 1name, level FROM users WHERE login = :login AND pass = :pass');
  31.  
  32. $statement->bindValue(':login', $this->login, PDO::PARAM_INT);
  33. $statement->bindValue(':pass', $this->pass, PDO::PARAM_INT);
  34. $statement->execute();
  35.  
  36. print_r ($statement);
  37.  
  38. foreach($statement as $row)
  39. {
  40. echo($row['1name']." ".$row['level']."<br />");
  41. }
  42. $statement->closeCursor();
  43. }
  44. }


core.class.php
  1. ini_set('display_errors', 1);
  2. ini_set('display_startup_errors', 1);
  3. class Core
  4. {
  5.  
  6. public static $config;
  7. private $configData = 'configs/config.ini';
  8.  
  9. public function __construct()
  10. {
  11. if (file_exists($this->configData)) {
  12. $file = parse_ini_file($this->configData, true);
  13. self::$config = $file;
  14. } else {
  15. return false;
  16. }
  17. header('Content-Type: text/html; charset=' . self::$config['system']['charset']);
  18. error_reporting(self::$config['system']['errorReporting']);
  19. if (phpversion() < self::$config['system']['PHPVersion']) {
  20. die('Your server must be in' . self::$config['system']['PHPVersion'] . ' PHP version or higher.');
  21. }
  22. return null;
  23. }
  24.  
  25. public function DBconnection()
  26. {
  27.  
  28. try {
  29. $db = new PDO(self::$config['db']['driver'] . 'dbname=' . self::$config['db']['db_name'] . ';host=' . self::$config['db']['host'], self::$config['db']['user'], self::$config['db']['password']);
  30. }
  31. catch (PDOException $e) {
  32.  
  33. echo $e->getMessage();
  34. }
  35. }
  36.  
  37. public function closeConnection() {
  38.  
  39. $this->db = null;
  40. }
  41. }
  42.  


Mam wrażenie, że łączę się z bazą tak, że w momencie gdy próbuję wykonać zapytanie SQL, to nie mam tam połączenia. Nie bardzo wiem jak to rozwiązać. Gdzie najlepiej wywołać połączenie by było dostępne?
Go to the top of the page
+Quote Post
markuz
post
Post #8





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Poczytaj o wzorcu MVC na początek. Twój kod nie jest obiektowy mimo tego, że używasz klas.
Co do połączenia z bazą danych, tworzysz je w metodzie DBconnection i ono sobie tam jest - nic z nim dalej nie robisz, nie zwracasz itp. więc nie możesz go używać w innym miejscu.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 12:30