[php] Systemy modułowe
: pt sie 01, 2003 4:38 pm
Witam,
Chciałbym się dowiedzieć, jak i czy w ogóle piszecie swoje większe aplikacje modułowo? Chodzi mi o sposób dzięki, któremu można wyświetlać na jednej stronie kilka modułów jak i jeden, np. na stronie głównej wyświetlać moduł newsy, top10, katalog stron WWW, a jak się kliknie na link, ktorychś z tych modułów to już pracujemy tylko w nim (?module=nazwa_modulu).
Ja sobie tak pisze, pisze w swoim systemie... i natknąłem się na problem
Otóż wszystko pisze sobie, pisze
obiektowo i mam klase 'modules', w której znajduje się między innymi metoda 'loadModules'. Pobiera ona z tabeli dane o modułach, które mają się wyświetlać na stronie głównej później w pętli uruchamiana jest metoda loadModule i jako parametr ma nazwę modułu, pobraną wcześniej z bazy danych. Metoda loadModule sprawdza czy Uzytkownik, który odpalił stronę ma uprawnienia do oglądania go, jeżeli tak to dołącza klasę modułu
a następnie odpala ją (zmienna $moduleName pochodzi z pliku index.php modułu i zawiera nazwę klasy, a drugi parametr: true = moduł pokazywany na stronie głównej; false = moduł NIE pokazywany na stronie głównej)
A to jest struktura klasy z pliku index.php modulu:
No i prawie wszystko działa. Jak odpalam jeden moduł (?module=example) to jest wyświetla mi 'test', tak jak powinno, ale jak wejdę na stronę główną, w bazie mam np. dwa rekordy określające jakie moduły mają się znaleźć na stronie głównej i tu już jest problem
Odpalana jest metoda loadModules robi się pętla, ale... no ale tylko raz
Dostaje wynik TYLKO JEDNEGO pierwszego modułu, a dalsze moduły się nie uruchamiają bo pętla zostaje zamknięta... Czemu? Oto jest moje pytanie 
Jak są jakieś niejasności to proszę pytać
P.S.
Zauważcie, że do każdej metody modułu przekazywać musze obiekt 'silnika', który zawiera wszystkie podstawowe funkcję, a to nie jest zbyt wygodne. Dlatego też proszę Was abyście przedstawili także swoje sposoby na systemy modułowe
Chciałbym się dowiedzieć, jak i czy w ogóle piszecie swoje większe aplikacje modułowo? Chodzi mi o sposób dzięki, któremu można wyświetlać na jednej stronie kilka modułów jak i jeden, np. na stronie głównej wyświetlać moduł newsy, top10, katalog stron WWW, a jak się kliknie na link, ktorychś z tych modułów to już pracujemy tylko w nim (?module=nazwa_modulu).
Ja sobie tak pisze, pisze w swoim systemie... i natknąłem się na problem
Kod: Zaznacz cały
include_once( './modules/' . $nazwa_modulu. '/index.php' );Kod: Zaznacz cały
new $moduleName( $this, true );Kod: Zaznacz cały
<?php
$moduleName = 'example';
class example
{
function example( &$mcms, $showStartPage )
{
if ( $showStartPage )
{
return $this->showStartPage( $mcms );
}
$mcms->setOutput( 'test' );
}
function showStartPage( &$mcms )
{
$mcms->setOutput( 'testowy moduł' );
}
}
?>Jak są jakieś niejasności to proszę pytać
P.S.
Zauważcie, że do każdej metody modułu przekazywać musze obiekt 'silnika', który zawiera wszystkie podstawowe funkcję, a to nie jest zbyt wygodne. Dlatego też proszę Was abyście przedstawili także swoje sposoby na systemy modułowe