Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacja między klasami...
Forum PHP.pl > Forum > PHP
CyberBob
Mam pytanie, w jaki sposób odwołać się do zmiennych i funkcji znajdujących się w klasie z poziomu innej klasy? Raczej nie mogę tutaj użyć dziedziczenia.
Seth
Podaj przyklad takich klas.
CyberBob
Mam klase, która obsługuje zapytania do serwa mySQL:
[php:1:79995c0050]<?php
class mod_mysql
{
(...)
function query( $query = '' )
{
// wysyla zapytanie do serwera sql
unset( $this -> query_result );

if( $query != '' ) $this -> num_queries++;

$this -> query_result = ( $query != '' ) ? @mysql_query( $query, $this -> connect_id ) : False ;

unset( $this -> row[$this -> query_result] );
unset( $this -> rowset[$this -> query_result] );

return ( $this -> query_result ) ? $this -> query_result : False ;
}
(...)
}
$modules['mysql'] = new mod_mysql( $dbhost, $dbuser, $dbpass, $dbname );
$db = &$modules['mysql'];
?>[/php:1:79995c0050]
i np. obslugująca system templatow...I jeśli chce sie odwołać do np. do metody query:
[php:1:79995c0050]<?php
$db -> query( $sql )
?>[/php:1:79995c0050]
z innej klasy np. "mod_stat" to wywala mi błąd. Gdyby chodziło tylko o jedną klase do ofkouz dziedziczenie, no ale robie coś na zasadzie modułów i to się nie za bardzo sprawdza...Jest na to jakiś sposób? Widziałem gdzieś na forum sposób aby jakoś połączyć wszystkie klasy, ale troche to było skomplikowane i chyba mało wydajne...Byłbym wdzięczny za porady...

----------------
edited by DeyV (aby kolorowanie działało - konieczne jest otwarcie kodu php odpowiednimi znacznikami...)
DeyV
Ja zazwyczaj robię to mniej więcej tak:
[php:1:03e80aa4a9]<?php
$GLOBALS['DB'] = new mod_mysql ;

class ModAbstract
{

function __construct()
{
$this->Db =& $GLOBALS['DB'];
}
}

class MyMod extends ModAbstract
{
/**
* nasz konstrukctor
*/
function MyMod ()
{
parent::__construct();
}

function cosTam()
{
$this -> Db -> query( $sql ) ;
}
}

?>[/php:1:03e80aa4a9]
CyberBob
big thx!
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.