Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Właściwe miejsce stworzenia egzemplarza klasy
Forum PHP.pl > Forum > Przedszkole
undivided
Witam,

Miałem taki kod:
  1. <?php
  2. require_once('MySql.class.php'); //obsługuje połączenie z bazą
  3. class MyClass{
  4.  function __construct(){
  5.  $conn = new MySqlClient(); //nawiązuje polączenie z bazą itp
  6.  }
  7.  function MyFunction(){
  8. $conn->query('zapytanie');
  9.  }
  10. }
  11. ?>


poniewaz jednak kod ten generował błąd mówiący że conn nie jest obiektem zmieniłem to na:

  1. <?php
  2. require_once('MySql.class.php'); //obsługuje połączenie z bazą
  3. class MyClass extends MySqlClient{
  4.  function __construct(){
  5.  parent::__construct();
  6.  }
  7.  function MyFunction(){
  8. parent::query('zapytanie');
  9.  }
  10. }
  11. ?>


Chciałbym zapytać czy istnieje jakiś inny sposób rozwiązania tego problemu , oczywiście mam PHP5.

Pozdrawiam,
Undivided
rojmarek
chyba nie do konca zrozumiałeś istotę obiektowości...
w ogole co ma robić klasa MyClass? konstruktor tej klasy tworzy sobie obiekt MySqlClient lecz po chwili jest on "niszczony" bo funkcja "umiera"...

$conn->query('zapytanie'); - oczywiscie ze $conn nie jest obiektem, bo nie jest niczym... gdyby był to atrybut tej klasy ($this->conn) to moglbys sie odwołać do tego...

  1. <?php
  2. require_once('MySql.class.php'); //obsługuje połączenie z bazą
  3. class MyClass{
  4.  private $conn;
  5.  function __construct(){
  6.  $this->conn = new MySqlClient(); //nawiązuje polączenie z bazą itp
  7.  }
  8.  function MyFunction(){
  9. $this->conn->query('zapytanie');
  10.  }
  11. }
  12. ?>
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.