Jestem w trakcie pisania własnego CMSa w OOP
Schemat:
Zaczne od drobnego opisu, o co chodzi
./admin/index.php - Odpala kontroler Controler.php
./admin/sources/Controller.php - Ładuje resztę plików + obsługuje errory itp
/classes/classTemplates.php - Obsługa templatek...
../constants.php - Zawiera definicje używane w całym skrypcie.
/classes/classMember.php - Wykonuje 'działania' na użytkownikach, np pobiera informacje o nim z DB.
/classes/classDB.php - Obsługuje zapytania do bazy danych
/admin/sources/Registry.php - Ładuje plik konfiguracyjny, zajmuje się odpalaniem aplikacji / hooków itp.
Z poziomu Registry.php normalnie mogę uruchamiać zapytania poprzez classDB.php.
Problem się pojawia, gdy tworzę aplikację administracyjną, która ma za zadanie sprawdzić poprawność danych użytkownika.
Wygląda to tak:
<?php
class AdminFunctions {
/* Przechowuje klase Registry */
protected $registry;
public function __construct( ) {
$this->registry = new Registry( );
print_r($this->registry->member()->fetchMemberData( 1 ));
}
}
Klasa Member:
<?php
class classMember {
protected $registry;
protected $controller;
protected $DB;
protected $settings;
/**
* Constructor
*
* @access public
* @return @e void
*/
public function __construct( ) {
$this->controller = new Controller( );
$this->registry = new Registry( );
$this->DB = new DB();
$this->settings =& $this->registry->fetchSettings( );
}
/**
* Function fetchUserSettings
*
* @access public
* @return @e array
*/
public function fetchMemberData( $memberID = NULL )
{
if( $memberID != NULL )
{
$memberID = (int)$memberID;
if( $memberID == NULL )
return NULL;
$query = $this->DB->Query( "SELECT * FROM `{$this->settings['Prefix']}members` WHERE `member_id` = {$memberID}" );
if( mysql_num_rows( $query ) < 1 )
return NULL;
return mysql_fetch_array( $query );
}
return NULL;
}
}
Wtedy zapytanie nie zostaje przekazane do funkcji DB::Query( $Query ).
Co może być tego przyczyną, oraz jak rozwiązać / ominąć ten problem?
Dodam że próbowałem w Registry.php dodać funkcję member()
public function member( )
{
return new classMember( );
}
Liczę na poważne odpowiedzi Jeżeli nie masz pojęcia o co chodzi, to nawet nie pisz.
Użytkownik Leihto edytował ten post 03.09.2012 16:22