Großes Projekt - Ordnerstruktur

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ein Framework mit Lazzy Loading würde doch passen. Da werden nur die Komponenten geladen, die du auch brauchst/willst. Oder du schaust mal nach ClassBundles Frameworks (Zend).

    Ich würde immer versuchen eine MVC Architektur mit den Ordnern nachzubilden,wobei folgendes da leicht abweicht aber immerhin eine solide Basis bietet, den Überblick zu behalten. Das würde einen Ordner (mit Unterordnern) für die PHP-Dateien bedeuten, die immer Requestspezifisch geladen werden. Einen Ordner für die Templates und eventuell einen Ordner für die datenbereitstellende Schicht.

    Quellcode

    1. /templates/
    2. /controller/core/request_manager.php
    3. /controller/home/index.php
    4. /controller/home/logout.php
    5. /models/home/index.php


    Also nur ein Beispiel. Wichtig ist, dass du dich gut auskennst. Optimal wäre es, wenn du Namespace nutzt und eben deine Ordnerstruktur da anpasst. Nachfolgenden mal meine Autoloader. Vorteil wäre, dass du schon früh an die Architektur herankommst, die auch in vielen Frameworks genutzt werden. So fällt ein eventueller Umstieg später leichter.

    Quellcode

    1. <?php
    2. namespace Core;
    3. class Autoloader {
    4. /**
    5. * Register the Autoloader
    6. *
    7. * @access public
    8. * @static
    9. * @return void
    10. **/
    11. static function registerAutoloader() {
    12. spl_autoload_register( '\Core\Autoloader::loadClass' );
    13. }
    14. /**
    15. * Search the File named $class
    16. *
    17. * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md#splclassloader-implementation
    18. * @access public
    19. * @static
    20. * @param string $class
    21. * @return void
    22. **/
    23. static function loadClass($class) {
    24. $class = ltrim($class, '\\');
    25. $fileName = '';
    26. $namespace = '';
    27. if ($lastNsPos = strrpos($class, '\\')) {
    28. $namespace = substr($class, 0, $lastNsPos);
    29. $class = substr($class, $lastNsPos + 1);
    30. $fileName = str_replace('\\', '/', $namespace) . '/';
    31. }
    32. $fileName .= str_replace('_', '/', $class) . '.php';
    33. if ( is_readable ( Framework . 'Library/' . $fileName ) ) {
    34. require_once Framework . 'Library/' . $fileName;
    35. } elseif ( is_readable ( \App::getBase() . $fileName ) ) {
    36. require_once \App::getBase() . $fileName;
    37. } else {
    38. throw new \Core\Exception\ExitException ( sprintf ( 'Die gesuchte Klasse "%s" konnte nicht gefunden werden.', $fileName ) );
    39. }
    40. }
    41. }
    Alles anzeigen


    Der Autoloader sucht im Verzeichnis (konstante) Framework/Library/_namespace_/datei.php nach der Datei.
    =O

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bastey ()