Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obiektowy - dziedziczenie
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

bawię się obiektowym PHP, nasuwa mi się myśl, jak np. z pliku function_sql.class.php,gdzie jest klasa class Sql, w której znajduje sie funkcja:

  1. <?php
  2. public function wyswietl($message)
  3. {
  4. echo $message;
  5. }
  6. ?>

połączyć ją z classą Rejestracja gdzie znajduje się w pliku rejestracja.class.php

próbowałem tak:

  1. <?php
  2.  
  3. require_once('function_sql.class.php');
  4. class Rejestracja extends Sql
  5. {
  6. $this->wyswietl(ziomek!);
  7. }
  8.  
  9. ?>


ale niestety nie działa...

Prosiłbym o cenne uwagi.

Pozdrawiam
Sokal
Jak użyjesz dziedziczenia (extends) to metody i pola są dołączane do dziecka winksmiley.jpg
SN@JPER^
aha, jak zrozumiałem extends działa podobnie jak include - dołącza... i wywołanie:

  1. <?php
  2. {
  3. $this->wyswietl(ziomek!);
  4. }
  5. ?>


nie jest potrzebne ?
mike
Cytat(SN@JPER^ @ 19.05.2007, 13:31:39 ) *
ale niestety nie działa...

Prosiłbym o cenne uwagi.
Hmm, myślę że fair będzie jeśli uwagi będą tak samo cenne jak pytanie.
<ironia>Otóż: pewnie na balkonie łazi mucha. Pogoń ją to zacznie działać.</ironia>

Jeśli piszesz że coś nie działa to powiedz co to dla Ciebie oznacza. Nie wyświetla się coś, wyświetla ale nie to czego chcesz.
Jaki masz poziom raportowania błędów? Czy wyświetlają się jakieś błędy? Jeśli tak to jakie? Jeśli nie to też napisz, że nie.

Polecam: Jak mądrze zadawać pytania

A teraz podpowiedź:
Brak Ci totalnych podstaw, stringi daje się w apostrofach albo cudzysłowach.
Łańcuchy znaków (string)


P.S.
Proszę poprawić tytuł wątku na spełniający zasady formułowania tytułów wątków opisanych w Regulaminie.
Inaczej wątek zostanie zamknięty.
kwiateusz
do tego po co dodawać specjalną metode żeby tylko echo nią opakować, do tego

  1. <?php
  2. $this->wyswietl(ziomek!);
  3. ?>


z

  1. <?php
  2. class Rejestracja extends Sql
  3. {
  4. $this->wyswietl(ziomek!);
  5. }
  6. ?>


znajduje sie w jakiejś funkcji czy tylko lezy luzem?
webdice
  1. <?php
  2.  
  3. require_once('function_sql.class.php');
  4. class Rejestracja extends Sql
  5. {
  6. $this->wyswietl('ziomek!');
  7. }
  8.  
  9. ?>


EDIT: Źle sobie popatrzyłem, daj:

  1. <?php
  2.  
  3. require_once('function_sql.class.php');
  4. class Rejestracja extends Sql
  5. {
  6.  
  7. public function __construct ()
  8. {
  9. $this->wyswietl('ziomek!');
  10. }
  11. }
  12.  
  13. ?>
SN@JPER^
A jak to będzie w przypadku połączenia z bazą, tak(?):


fuction_sql.class.php:

  1. <?php
  2.  
  3. class Sql
  4. {
  5.  public function connect_db($host_db, $user_db, $haslo_db, $baza_db)
  6.  {
  7.  mysql_connect($host_db, $user_db, $haslo_db);
  8.  mysql_select_db($baza_db);
  9.  }
  10. }
  11.  
  12.  
  13.  
  14.  
  15. ?>


rejestracja.class.php:

  1. <?php
  2.  
  3. require_once('funkcje/function_sql.class.php');
  4.  
  5. class Rejestracja extends Sql
  6. {
  7.  
  8. $this->connect_db('localhost', 'root', '', 'sss');
  9.  
  10. }
  11.  
  12. ?>


Jednakże, gdy tak zrobiłem wyskakuje komunikat:


Parse error: parse error, unexpected T_VARIABLE, expecting T_FUNCTION in D:\......\rejestracja.class.php on line 8

EDIT:

Zobaczylem wy edytowany post:

rejestracja.class.php:

  1. <?php
  2.  
  3. require_once('funkcje/function_sql.class.php');
  4.  
  5. class Rejestracja extends Sql
  6. {
  7.  
  8. function __construct()
  9. {
  10. $this->connect_db('localhost', 'root', '', 'sss');
  11. }
  12. }
  13.  
  14. ?>
webdice
  1. <?php
  2. $this->connect_db('localhost', 'root', '', 'sss');
  3. ?>


Nie możesz sobie tego dać gdziekolwiek w klasie. Musisz umieścić to w jakiejś metodzie.
kwiateusz
rozumiesz zasade działania klas? w klasie sią tylko zmienne i metody(funkcje) nie moze tam nic luzem leżeć...
SN@JPER^
Dlatego wyedytowałem post, jak zobaczyłem ten poprzedni...

tylko, w tym tkwi problem iż dane do bazy są poprawne mimo tego, nadal jest napisane, że nie...:


function_sql.class.php
  1. <?php
  2.  
  3. class Sql
  4. {
  5.  public function connect_db($host_db, $user_db, $haslo_db, $baza_db)
  6.  {
  7.  mysql_connect($host_db, $user_db, $haslo_db);
  8.  mysql_select_db($baza_db);
  9.  }
  10. }
  11.  
  12.  
  13. ?>


rejestracja.class.php

  1. <?php
  2.  
  3. require_once('funkcje/function_sql.class.php');
  4.  
  5. class Rejestracja extends Sql
  6. {
  7. function __construct()
  8. {
  9.  if(!$this->connect_db('localhost', 'root', '', 'sss')){echo 'złe połączenie z baza danych';}
  10. }
  11. }
  12.  
  13. $class = new Rejestracja();
  14.  
  15.  
  16. ?>
webdice
Bo funkcja connect_db nic nie zwraca, w tej funkcji sprawdź czy połączenie jest ok i daj return true.
SN@JPER^
Dzięki wielkie, odrazu lepiej...

Trudne te klasy...

PS: Przepraszam za durne pytania.

Pozdrawiam
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.