CyberBob
14.02.2004, 16:12:53
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
14.02.2004, 16:18:14
Podaj przyklad takich klas.
CyberBob
14.02.2004, 19:14:32
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
14.02.2004, 21:34:24
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]