
MVPHP ist ein einfaches, leicht hackbares Framework für die Entwicklung minimal tragfähiger PHP -Webanwendungen. Viele PHP -Frameworks haben eine steile Lernkurve und haben ihre Funktionalität tief abstrahiert. MVPHP ist so konzipiert, dass die Dinge einfach, einfach und näher an reinem PHP bleiben. Es bietet auch eine einfache und anpassbare Implementierung von Bootstrap, damit Sie ein Front -End ohne viel Ärger erstellen können.
Was es beinhaltet:
Was es nicht ist:
MVPHP ist kein robustes und gut getestetes PHP-Framework wie Laravel, Symfony, Zend usw. Dieses Rahmen ist für die rasante Entwicklung von Proof-of-Concept-PHP-Webanwendungen mit minimalem Overhead, wenigen Meinungen und viel Flexibilität bestimmt. Verwenden Sie es auf eigenes Risiko! Bitte erstellen Sie ein Problem, wenn Sie auf einen Fehler stoßen oder Vorschläge haben.
composer install in der Projektrohne aus.npm install -g gulp-cli aus, um die Gulp -CLI global zu installierennpm install im Projektroot aus, um die Tools zu installieren. Wir müssen die Front-End-Dateien erstellen.gulp aus, um die Front-End-Dateien zu erstellen.public Verzeichnis.Die Grundidee hinter diesem Framework besteht darin, mit einer einfachen Klasse zu beginnen, die alle grundlegenden Funktionen übernimmt.
app.php ist die Bootstrap -Datei, in der zuerst unsere config.php geladen werden, und dann unsere Hauptklasse durch das Erstellen des $app -Objekts instanziiert. Ein $auth -Objekt wird auch für alle Authentifizierungsfunktionen erstellt. Wir verweisen auf eine Eigenschaft unseres Hauptziels ( $app->auth ), um $auth zu verweisen, um die Dinge einfach zu halten und es im Rahmen des $app zugänglich zu machen.
$ app = new MVPHP (); Fast alles, was wir tun, wird dieses $app -Objekt verwenden.
app.php benötigt auch die Datei routes.php im Stammverzeichnis, in dem wir unsere Anfangsrouten definieren. In dieser Datei werden mehrere Arbeitsbeispiele angezeigt.
Es gibt einige Möglichkeiten, eine Route zu definieren und was sie tun sollte:
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff here
}); Eine Schließung ist eine anonyme Funktion, die ausgeführt wird, wenn die Anforderung URI mit der Route übereinstimmt. Damit die Methoden in unserer Haupt -MVPHP -Klasse in dieser anonymen Funktion zugänglich sind, geben wir die use ($app) . Dadurch wird die $app -Variable in den variablen Bereich der anonymen Funktion importiert.
$ app -> route ( ' /example/{id} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});Sie können variable Parameter in einem URI mit Klammern angeben. Sie werden in einem assoziativen Array identifiziert, wobei der Schlüssel der in der Route definierte Name ist und der Wert der tatsächliche Wert ist, der in der Anforderungs -URI angegeben ist.
$ app -> route ( ' /example/{id:int} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});Sie können auch Einschränkungen für die Anpassung von URI -Parametern definieren, indem Sie einen Dickdarm verwenden, gefolgt vom Einschränkungsart. Wenn Sie den Einschränkungswert auslassen, werden Sie standardmäßig die Einschränkung "String" beschränken.
Einschränkungsoptionen:
Beispiele für reguläre Ausdrucks:
Jeder Ausdruck, der mit der preg_match -Funktion von PHP funktioniert, funktioniert hier. Dieses Tool ist nützlich, um Ausdrücke zu testen, bevor Sie sie implementieren.
// This example requires the ID value to be a 5 digit number
$ app -> route ( ' /example/{id:regex=^[0-9]{5}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});
// This example requires the ID to be lower or uppercase letters between 1-10 characters long
$ app -> route ( ' /example/{id:regex=^[a-zA-Z]{1,10}$} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
}); $ app -> route ( ' /example ' ); Manchmal hat Ihre App viele Routen und Sie würden sie lieber in separate Dateien organisieren, als sie alle in der Datei routes.php zu haben.
Wenn Sie eine solche Route registrieren, sucht MVPHP nach einer korrelierten Datei mit demselben Namen im controllers -Verzeichnis. Im obigen Beispiel sucht eine Route, die zu /example registriert ist, nach einem example.php -Datei im Verzeichnis der Controller und verlangt.
Jetzt können Sie weitere Routen registrieren, die sich auf /example -Endpunkte in der Datei example.php beziehen. Beispielsweise könnten Ihre controllers/example.php -Datei so aussehen:
// Reiterate this route and do something with it this time
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff
});
// Register any other related route endpoints here
$ app -> route ( ' /example/stuff ' , function () use ( $ app ) {
// Do stuff
});Wenn Sie eine bestimmte Datei mit einem anderen Namen verwenden möchten, werden Sie einfach als zweiter Parameter angeben:
$ app -> route ( ' /example ' , ' myfile ' ); Dies wird versuchen, controllers/myfile.php zu verlangen.
Das Konzept von Routen, Controllern und Modellen ist in diesem Framework sehr locker definiert. Wir vermeiden es, eine Reihe verschiedener Klassen aus Einfachheit zu verwenden. Ein Controller sollte im Kontext dieses Frameworks einfach ein Ort sein, an dem Sie zwischen Anforderungen und Funktionen vermitteln können, definiert das Modell.
Schauen Sie sich die Dateien im Verzeichnis der controllers an, um Beispiele zu erhalten.
Wir können verschiedene Anforderungsmethoden mit der action testen:
$ app -> route ( ' /example ' , function () use ( $ app ){
if ( $ app -> action ( ' post ' ) ) {
// Do stuff on POST
} elseif ( $ app -> action ( ' get ' ) ) {
// Do stuff on GET
}
}); Die Ansichtsvorlagen werden im views -Verzeichnis gespeichert. Wir können eine Ansicht (normalerweise von einem Controller) wie folgt aufrufen:
$ app -> view ( ' my-template ' ); Dies sucht einfach nach my-template.php im Ordner der Ansicht und erfordert die Datei. Wenn wir Variablen in der Vorlagendatei haben, müssen wir diese in die Ansichtsmethode wie folgt übergeben:
$ my_var1 = ' Stuff I want to echo in the template. ' ;
$ app -> view ( ' my-template ' , [
' my_var1 ' => $ my_var1
]); Jetzt ist $my_var1 in der Ansichtsvorlagendatei zugegriffen.
Wir kümmern uns nicht um einen Vorlagenmotor (weil PHP von Natur aus eine Vorlagensprache ist ). Greifen Sie einfach auf die Varialbes in Ihrem HTML zu: wie folgt:
< p > < ?=$my_var1;? > </ p >Bedingte Aussagen:
< ?php if ( isset($my_var1) ):? >
< p > < ?=$my_var1;? > </ p >
< ?php endif;? >Sie haben die Idee. Reine und einfache PHP -Vorlagen.
Standardmäßig verwendet das Frontend Bootstrap. Sie finden alle Quelldateien im frontend -Verzeichnis. Die Anweisungen zum Erstellen der Quelldateien aus dem frontend -Ordner sind in der Datei gulpfile.js im Projektroot definiert.
Wenn Sie zum ersten Mal im Projektroot gulp ausführen, wurden die SCSS- und JavaScript -Dateien kombiniert, abgebaut und in den public Ordner kopiert. Anbieter JS- und CSS -Dateien, die wir verwenden (JQuery, Bootstrap usw.), werden ebenfalls in den public Ordner kopiert.
Bevor Sie die SCSS- und JavaScript -Dateien im frontend -Verzeichnis bearbeiten, können Sie gulp watch im Projektroot ausführen. Gulp wird nach Änderungen achten, die Sie in den Dateien speichern, und speichern sie während des Weges.
Die Klasse models/Documents.php bietet eine Methode zum Schreiben einer PDF -Datei aus einer HTML -Quelle. Diese Klasse verwendet WKHTMLTOPDF und muss möglicherweise diese Abhängigkeiten installieren, bevor sie funktioniert:
sudo apt-get install xfonts-base xfonts-75dpi urw-fonts
In Zukunft werden mehr PDF- und andere "Dokumente" -Funktionalität hinzugefügt.
Geben Sie tiefer in andere verfügbare Versorgungsmethoden ein, indem Sie sich die models/MVPHP.php -Datei ansehen, die unsere Hauptklasse enthält. Weitere werden in Zukunft hinzugefügt!