Hallo Szabo,
vielen Dank für Deine Antwort.
Ich habe mir Dein
Autoload Tutorial zu Gemüte geführt.
Der für mich bzw. mein Vorhaben relevante Ansatz wäre warscheinlich der letzte von Dir beschriebene mit der komplexen AutoLoad Variante.
Der Aufbau der Klasse ist soweit auch klar, allerdings verstehe ich folgendes nicht:
- Wo bekommt die Klasse mitgeteilt, wo die Verzeichnisse sind, die für
Autoload eingebunden werden sollen? (Wäre ja für jedes "Modul" ein weiteres Verzeichniss)
- WIe kann ich mit dem Lösungsansatz realisieren, das ich an jeder Stelle der Anwendung die in der Konfiguration hinterlegten Pfade zur Verfügung habe?
Zur Verdeutlichung habe ich mal einen Auszug aus meiner
CoreConfig.cfg.php und der
CoreInit.php unten angefügt.
CoreInit.php
|
PHP Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php
date_default_timezone_set('Europe/Berlin'); // Fix Compiler Error if date() is called relying to the system timezone
$loc = setlocale(LC_ALL, 'utf-8'); // Sprach bzw. Gebietsschema fuer Zeit / Datum etc. festlegen
require_once('config/CoreConfig.cfg.php');
require_once(_CORE_SRC.'CustomExceptions.php');
$definedConstants = get_defined_constants(true);
/* Zu Debug Zwecken
echo '<pre>';
print_r($definedConstants['user']);
echo '</pre>';
*/
require_once(_CORE_CLASSES.'CoreDB.class.php');
try {
$DB = CoreDB::getInstance();
} catch (DBException $dbe) {
print_r($dbe);
} catch (PDOException $pdoe) {
print_r($pdoe);
} catch (ErrorException $erre) {
print_r($erre);
}
?>
|
CoreConfig.cfg.php
|
PHP Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?php
/**
* Core Configuration
*/
/**
* ####################################################
* ### Core Verzeichnisse
* ####################################################
*/
define('_CORE_BASE','core/');
define('_CORE_LIBS',_CORE_BASE.'libs/');
define('_CORE_CLASSES',_CORE_BASE.'classes/');
define('_CORE_JAVASCRIPT',_CORE_BASE.'javascript/');
define('_CORE_SRC',_CORE_BASE.'src/');
/**
* ####################################################
* ### Smarty
* ####################################################
*/
define('_CORE_SMARTY_DIR',_CORE_LIBS.'smarty/');
/**
* ####################################################
* ### Design
* ####################################################
*/
define('_CORE_DESIGN_DIR',_CORE_BASE.'design/');
define('_CORE_DESIGN_IMAGE_DIR',_CORE_DESIGN_DIR.'img/');
define('_CORE_DESIGN_STYLE_DIR',_CORE_DESIGN_DIR.'style/');
/**
* ####################################################
* ### jQuery
* ####################################################
*/
define('_CORE_JQUERY_DIR',_CORE_LIBS.'jquery-ui-1.8.9.custom/');
define('_CORE_JQUERY_CSS_DIR',_CORE_JQUERY_DIR.'css/custom-theme/');
define('_CORE_JQUERY_JS_DIR',_CORE_JQUERY_DIR.'js/');
/**
* ####################################################
* ### epiclock
* ####################################################
*/
define('_CORE_EPICLOCK_DIR',_CORE_LIBS.'epiclock/');
define('_CORE_EPICLOCK_CSS_DIR',_CORE_EPICLOCK_DIR.'stylesheet/');
define('_CORE_EPICLOCK_JS_DIR',_CORE_EPICLOCK_DIR.'javascript/');
define('_CORE_EPICLOCK_RENDERERS_DIR',_CORE_EPICLOCK_DIR.'renderers/');
define('_CORE_EPICLOCK_RENDERERS_RETRO_DIR',_CORE_EPICLOCK_RENDERERS_DIR.'retro/');
define('_CORE_EPICLOCK_RENDERERS_RETROCOUNTDOWN_DIR',_CORE_EPICLOCK_RENDERERS_DIR.'retro-countdown/');
/**
* ####################################################
* ### pChart
* ####################################################
*/
define('_CORE_PCHART_DIR',_CORE_LIBS.'pChart2.1.0/');
define('_CORE_PCHART_CLASS_DIR',_CORE_PCHART_DIR.'class/');
define('_CORE_PCHART_FONTS_DIR',_CORE_PCHART_DIR.'fonts/');
define('_CORE_PCHART_PALETTE_DIR',_CORE_PCHART_DIR.'palettes/');
?>
|
Ich hoffe, mein Problem bzw. meine Anforderung wird durch die beiden Dateipostings etwas deutlicher.