2017-10-29 3 views
0

Ich versuche, Dateien automatisch zu laden und einen Einstiegspunkt für meine App zu haben. Ich benutze kein Framework, benutze OOP. Meine composer.json Datei ist:So laden Sie Dateien mithilfe von Autoload automatisch erstellen und psr-4

{ 
 
    "require": { 
 
     "tebazil/db-seeder": "^0.0.0" 
 
    }, 
 
    "autoload": { 
 
     "psr-4": { 
 
      "vendor\\": "vendor/", 
 
      "App\\": "src/classes/" 
 
     }, 
 
     "files": [ 
 
      "src/functions.php" 
 
     ] 
 
    } 
 
}

In dieser Datei functions.php ich mit dem Verkäufer/autoload.php Datei enthalten sein sollen. Ich bin mir nicht sicher, wie man diesen Einstiegspunkt für die App erstellt und dort diese Hersteller/Autoload-Datei benötigt, weil ich Frameworks für dieses Ziel verwendet habe.

Dies ist der aktuelle Inhalt der functions.php, aber es gibt ein anderes Problem, wie ich die index.html view-Datei rendern, aber es gibt eine Ajax-Anfrage. Was ist jedoch der richtige Weg, um eine Bootstrap-Datei für die App zu erstellen und erforderliche Dateien automatisch zu laden?

<?php 
 
namespace App; 
 

 
require_once __DIR__ . '/../vendor/autoload.php'; 
 

 
use App\Db; 
 
use App\User; 
 
class Functions 
 
{ 
 

 
    public function render() 
 
    { 
 
     ob_start(); 
 
     include(__DIR__ . '/../index.html'); 
 
     $content = ob_get_contents(); 
 
     ob_end_clean(); 
 
     echo $content; 
 
    } 
 
} 
 

 
if(!($_GET && array_key_exists('name', $_GET))) { 
 
    $functions = new Functions(); 
 
    $functions->render(); 
 

 
} 
 

 
if($_GET && array_key_exists('name', $_GET)){ 
 
    $user = new User(); 
 
    $users = $user->getUsers(); 
 
}

+0

Sie haben dort eine zirkuläre Abhängigkeit. Autoloaded-Dateien sind im Autoloader enthalten, aber Ihre Autoloaded-Datei enthält den Autoloader. – tkausl

Antwort

1

Soweit ich Sie nicht brauchen, sehen auf "functions.php" in Komponisten zu registrieren. Ihre Anwendung kann die folgende Struktur haben:

- app_folder/ 
    - src/ 
    - classes/ 
    - index.html 
    - public/ 
    - functions.php 
    - vendor/ 
    - ... 

Wo „functions.php“ Datei dient als Anwendung Einstiegspunkt. Richten Sie Ihren Webserver auf den "public" -Ordner, so dass alle anderen Dateien für Ihren PHP-Code zugänglich sind, aber nicht für Benutzer.

Sie können Ihr Routing oder ähnliche Aufgaben in "functions.php" implementieren und Komponenten wie Modelle und Ansichten auf "src" setzen, und Sie erhalten eine einfache, aber strukturierte Anwendung.

+0

Also, ich muss ein Mini-Framework erstellen. –

+1

Der einzige Zusatz, den ich zu Ihrer ursprünglichen Struktur gemacht habe, ist das Konzept des "öffentlichen" Ordners, der die einzige Sache sein sollte, die durch den Webserver zugänglich ist. Setzen Sie dort Ihren Einstiegspunkt und alle Assets, die vom Webserver bedient werden - zum Beispiel Bilder. Alles andere liegt an dir und deiner Aufgabe. Sie können Aufgaben in reinem PHP recht erfolgreich lösen, indem Sie bei Bedarf spezielle Bibliotheken verwenden. –

Verwandte Themen