Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] problem z klasą obsługującą bazę danych
Forum PHP.pl > Forum > Przedszkole
saperos
Witam wszystkich forumowiczów.

Jest sobie taka klasa:
  1. <?php
  2. class db{
  3. var $connect;
  4.  
  5. function __construct(){}
  6.  
  7. public function db_connect ($_hostname, $_login, $_password, $_database){
  8. $connect = mysql_connect($_hostname,$_login,$_password);
  9. mysql_select_db($_database);
  10. return $this->connect;
  11. }
  12.  
  13. public function db_close() {
  14. return mysql_close($this->connect);
  15. }
  16.  
  17. }
  18.  
  19. $baza = new db;
  20. $baza->db_connect(&#092;"localhost\",\"login\",\"haslo\",\"baza\");
  21. $baza->db_close();
  22. ?>


Nie moge zrozumieć czemu w takiej formie funkcja db_close() zwraca warning

  1. Warning: mysql_close(): supplied argument IS NOT a valid MySQL-Link resource IN E:\xampp\htdocs\INDEX.php ON line 15


Dopiero return $this->connect = $connect w funkcji db_connect roziazuje probulem. Tylkoe nie mam zielonego pojecia czemu tak musi byc...
erix
Cytat
Tylkoe nie mam zielonego pojecia czemu tak musi byc..

Ponieważ zmienne, które są zadeklarowane w klasie mają być poprzedzone pseudoobiektem $this. Może być przecież zmienna lokalna funkcji o takiej nazwie, której chcesz użyć. Skąd interpreter ma wiedzieć, co miałeś na myśli?

Podstawy, podstawy...

PS. O ile pamiętam, to var był używany w PHP4.
saperos
po prostu nie trafia do mnie czemu interpreter "nie wie" że $this->connect to wlasnie ten $connect bedacy uchwytem mysql_connect, zmiennej lokalnej funkcji zadnej nie ma, wiec nie ma on w czym "wybierac"

i przyjmijmy ze tego var $connect; w ogole nie ma.
nospor
sprawa jest banalnie prosta i przyjmij to do wiadomosci:
$this->zmienna - wlasciwosc klasy
$zmienna - zmienna lokalna

koniec i kropka.

Cytat
trudne początki nauki obiektowego php

Popraw tytul. tytul ma odzwierciedlac problem a nie twoj stan wiedzy
saperos
Cytat(nospor @ 10.02.2009, 21:17:23 ) *
sprawa jest banalnie prosta i przyjmij to do wiadomosci:
$this->zmienna - wlasciwosc klasy
$zmienna - zmienna lokalna

koniec i kropka.

a mysql_close() nie obsluzy wlasciwosci klasy, która trzeba przypisac do zmiennej lokalnej czy tak? smile.gif

Cytat(nospor @ 10.02.2009, 21:17:23 ) *
Popraw tytul. tytul ma odzwierciedlac problem a nie twoj stan wiedzy

zrobione.
erix
Cytat
która trzeba przypisac do zmiennej lokalnej czy tak?

Trochę zapultałeś, ale aby rozjaśnić: $asd, to jest zmienna, a $this->asd, to też jest zmienna, tylko zadeklarowana w innym miejscu.

Czy autobus stoi w zajezdni, czy na przystanku, to też jest autobus. winksmiley.jpg
saperos
chodzilo mi o to że mysql_close() nie obsluzy zmiennej w formie $this->asd smile.gif

Jeśli tak jest to wszystko juz rozumiem i rzeczywiście było to banalnie proste. Jednak czasem ktos musi pokazać ze takie to wlasnie jest. Dzieki!
erix
Cytat
chodzilo mi o to że mysql_close() nie obsluzy zmiennej w formie $this->asd

Obsłuży i o tym napisałem. Manual Twoim przyjacielem, tam jest wszystko napisane, wystarczy tylko przeczytać (ze zrozumieniem).
nospor
obsluzy, tylko w tym $this->asd ma byc poprawny resource z mysql_connect() czego u ciebie nie bylo... przeciez ciagle ci to mowimy.
Wynik mysql_connect zapisywales do $asd a powinienes do $this->asd, skoro w mysql_close korzystasz z $this->asd
saperos
przepraszam ciezki ze mnie uczen smile.gif kurcze juz wszystko jasne... dzieki za cierpliwosc! Jak mowicie klania sie nieznajomosc podstaw...
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.