Ezt a kis szösszenetet azért hoztam létre, hogy valamennyire átlássa mindenki, hogyan is működik a rendszer és ezzel talán kicsit könnyítsem a hibakeresést (itt főleg az indulás részre gondolok). Valamint ez egy teljes linkgyűjtemény, mivel minden lehetséges helyen hivatkozom a már megírt vagy megírandó oldalakra.
Működés
Indulás
0. lépés
A rendszer (némi inicializálás után) a parancssori paraméterek értelmezésével kezdi a működést. A paraméterek között vannak olyanok, amelyek a feladat elvégzése után azonnal ki is lépnek. A fel nem ismert paramétereket az ARGS tömbben helyezi el.
1. lépés
Amennyiben a paraméterek egyike sem olyan, hogy a rendszer megálljon, akkor az indulás a log fájl megnyitásával folytatódik (amennyiben paracssorból nem tiltottuk le a -nolog opcióval). Ekkor rögtön beírja a logba, hogy “Application starting…“ és az “Application version: 0.8.3.8 (css) (cmd) (png) (gif) (mysql) (postgres)“ (Bővebben)
Ezután a Cor4App.ini fájl olvasása következik, amiből a működés egyes paraméterei mellett megállapítja az alkalmazás gyökérkönyvtárát. A következő lépésben a PHP alrendszer inicializálása következik a következő sorrendben: a PHP parser indítása, függvények regisztrálása és végül a PHP operátorok regisztrálása. Még ebben a lépésben inicializálja a megjelenítő modult is a megfelelő komponensek (controls) regisztrálásával.
Amennyiben idáig hiba nélkül eljut a rendszer a DEBUG verzió egy a log-ba írt Base objects loaded successfully üzenettel tudatja ezt velünk, ellenkező esetben (minden verzió esetén) egy hibaablakot kapunk, a Hiba a rendszer inicializálása közben üzenettel. Ha nem képes írásra megnyitni a log-ot (mert például már fut egy példányban), akkor is ezt az üzenetet kapjuk!
2. lépés
A munkát a konstansok inicializálásával folytatja, amelyben először az előre definiált konstansokat (pl: billentyűkódok) definiálja. Ezután megpróbálja a Cor4App.ini fájlban meghatározott helyről felolvasni az appconfig.inc.php fájlt. Amennyiben nem létezik ez a fájl, akkor egy Nem sikerült beolvasni a konfigurációs file-t: ”filenév” hibaüzenetet kapunk és a program azonnal terminál. Siker esetén a DEBUG verzió egy Constants loaded üzenetet küld.
Ezután néhány fontos belső konstans meghatározása (pl: téma könyvtár, temp könyvtár stb.) után olvassa be a listában használt négy pici ikont a DIR_IMAGES által meghatározott könyvtárból:
list_csv.gif: a CSV export ikonjalist_csv_filt.gif: a szűrt eredmény exportálásának ikonjalist_print.gif: a nyomtatás ikonjalist_print_filt.gif: a szűrt eredmény nyomtatásának ikonja
Megvizsgálja az INCLUDES konstans értékét, és amennyiben értéke nem üres vesszővel elválasztott listának tekinti és a felsorolt fájlokat (mint PHP fájlokat) végrehajtja. Célszerű ezekben csak függvényeket definiálni, mert a globális változók nem maradnak meg!
Végül amennyiben az APP_ICON konstans értéke nem üres, akkor az általa meghatározott fájl lesz az alkalmazás ikonja.
A lépés befejezéseképpen a DEBUG verzió a logba ír két üzenetet: Application theme directory is “data\themes\onlineweb” és Application temporary directory is “w:\app\source\tmp”, amelyek a téma könyvtár (relatív) címét illetve a temporary könyvtár teljes elérési útját tudatják velünk.
3. lépés
A CSS fordítású kliens ekkor olvassa fel a megfelelő template fájlt, amelyet (az előbb kiírt) téma könyvtár és a HTML_DEFAULT_TEMPLATE konstans összeolvasztásából nyer ki. A DEBUG kliens a felolvasás kezdetét egy Loading template… üzenettel jelzi, a befejezésre pedig egy Template loaded üzenet figyelmeztet.
Majd ezután értelmezi a langpack fájlt, amit a DIR_LANGPACK könyvtárban keres lang_xx.php néven, ahol az xx a CURRENT_LANG konstans értéke.
Ezzel a rendszer alap rendszerei inicializálva vannak és a szükséges konfigurációs fájlokat is felolvasta a rendszer.
A DEBUG verzió egy ablakot jelenít meg, rajta két gombbal: AppTest és ScanAndRun. Az AppTest indítja az alkalmazást úgy, mint ahogyan a NORMAL verzió indítaná. A ScanAndRun tesztelésre használható: az alkalmazás gyökerében található test.php alkalmazást futtatja le, mint egy handlert.
Az alkalmazás indítása úgy történik, hogy az APP_START_PROCESS konstans alapján megállapítja az induló process-t és annak felolvasásával elkezdődik az alkalmazás futtatása.