Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi
szczypior
post
Post #2





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

Posty w temacie


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: 17.10.2025 - 11:40