Mam nastepujacy problem: otoz pisze sobie cos na ksztalt silnika strony, zdecydowalem sie na php5, mam klase kernel:
[php:1:7357c021bb]<?php
class Kernel
{
public $objDB = null;
public $objConfig = null;
function __construct()
{
$this->objDB = new DB;
$this->objConfig = new Config( $this );
$this->objDB->Connect( 'tutaj parametry polaczenia' );
}
}
?>[/php:1:7357c021bb]
Oczywiscie klasa jest bardziej rozbudowana, ale chce zilurtrowac tylko problem - jadro tworzy obiekt Config i obiekt DB - config jest pobierany z bazy danych, dlatego do obiektu Config przekazuje referencje jadra systemu, aby mogl wykonac sobie metody sterownika bazy danych. Klasa Config wyglada w uproszczeniu tak:
[php:1:7357c021bb]<?php
class Config
{
private $objKernel = null;
public $arrVars = array();
function __construct( $objKernel )
{
$this->objKernel = $objKernel;
$this->Load();
}
function Load()
{
$this->objKernel->objDB->Query( 'SELECT config_name, config_value FROM ' . CONFIG_TABLE );
while( $arrRow = $this->objKernel->objDB->FetchAssoc() )
{
$this->arrVars[$arrRow['config_name']] = $arrRow['config_value'];
}
}
}
?>[/php:1:7357c021bb]
Wszystko wyglada w porzadku, z tym, ze wywolanie metod bazy danych z wewnatrz obiektu Config nic nie daje, jesli wywoluje je luzem, tworzac jakis nowy plik php i umieszczajac w nim kod:
[php:1:7357c021bb]<?php
include 'kernel.php';
$objKernel = new Kernel;
$objKernel->objDB->Query('zapytanie');
$arrRow = $objKernel->objDB->FetchRow();
?>[/php:1:7357c021bb]
to wszystko jest ok, w $arrRow mam dane, ale niestety jesli proboje zrobic to samo wewnatrz jakiegos obiektu do ktorego przekazalem obiekt jadra, to nie otrzymuje zadnego wyniku.