
MVPHPは、最小限の実行可能なPHP Webアプリケーションを開発するためのシンプルで簡単にハッキング可能なフレームワークです。多くのPHPフレームワークには、急な学習曲線があり、その機能を深く抽象化しています。 MVPHPは、物事をシンプルで簡単に、純粋なPHPに近づけるように設計されています。また、ブートストラップのシンプルでカスタマイズ可能な実装を提供し、あまり手間をかけずにフロントエンドの作成を開始します。
含まれるもの:
そうではないこと:
MVPHPは、Laravel、Symfony、Zendなどの堅牢でよくテストされたPHPフレームワークではありません。このフレームワークは、最小限のオーバーヘッド、意見がほとんどなく、柔軟性が低い概念実証PHP Webアプリケーションを迅速に開発することを目的としています。あなた自身の責任でそれを使用してください!バグに遭遇したり、提案がある場合は問題を作成してください。
composer installを実行します。npm install -g gulp-cliグローバルにインストールするgulpcliをインストールするnpm install実行して、フロントエンドファイルを構築するために必要なツールをインストールします。gulpを実行して、フロントエンドファイルを構築します。publicディレクトリに向けます。このフレームワークの背後にある基本的なアイデアは、すべての基本機能を処理する1つの単純なクラスから始めることです。
app.php 、最初にconfig.php設定をロードしてから、 $appオブジェクトを作成してメインクラスをインスタンス化するブートストラップファイルです。 $authオブジェクトは、すべての認証関連の機能に対して作成されます。メインオブジェクトのプロパティ( $app->auth )を指して、物事をシンプルに保ち、 $appの範囲内でアクセスできるようにするために$authを参照します。
$ app = new MVPHP ();私たちが行うほとんどすべては、この$appオブジェクトを利用します。
app.phpは、ルートディレクトリのroutes.phpファイルも必要であり、最初のルートを定義します。このファイルには、いくつかの作業例が表示されます。
ルートを定義する方法と、それが何をすべきかを定義する方法がいくつかあります。
$ app -> route ( ' /example ' , function () use ( $ app ) {
// Do stuff here
});閉鎖は、リクエストがルートと一致するときに実行される匿名関数です。メインMVPHPクラスのメソッドがこの匿名関数内でアクセスできるようにするために、 use ($app) 。これにより$app変数が匿名関数の変数スコープにインポートされます。
$ app -> route ( ' /example/{id} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});括弧付きのURIの変動パラメーターを示すことができます。それらは、キーがルートで定義されている名前であり、値がリクエストURIで提供される実際の値である関連配列で識別されます。
$ app -> route ( ' /example/{id:int} ' , function ( $ params ) use ( $ app ) {
echo $ params [ ' id ' ];
});コロンを使用して制約タイプを使用して、URIパラメーターを一致させるための制約を定義することもできます。制約値を除外すると、デフォルトは「文字列」制約になります。
制約オプション:
正規表現の例:
PHPのpreg_match関数で動作する式は、ここで機能します。このツールは、式を実装する前にテストするのに役立ちます。
// 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 ' );アプリには多くのルートがある場合があり、それらをすべてroutes.phpファイルに持っているよりも、それらを個別のファイルに整理したいです。
このようなルートを登録すると、MVPHPはcontrollersディレクトリに同じ名前の相関ファイルを探します。上記の例では、 /exampleに登録されているルートでは、コントローラーディレクトリ内のexample.phpファイルを探し、それを必要とします。
これで、 example.phpファイルで/exampleエンドポイントに関連するより多くのルートを登録できます。たとえば、 controllers/example.phpファイルは次のようになります。
// 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
});別の名前の特定のファイルを使用する場合は、単に2番目のパラメーターとして指定します。
$ app -> route ( ' /example ' , ' myfile ' );これによりcontrollers/myfile.phpが必要になります。
ルート、コントローラー、モデルの概念は、このフレームワークで非常にゆるく定義されています。簡単にするために、さまざまなクラスの束を使用しないでください。このフレームワークのコンテキストにおけるコントローラーは、単にモデルを定義するリクエストと機能を調停する場所である必要があります。
例については、 controllersディレクトリのファイルをご覧ください。
actionメソッドを使用して、さまざまな要求方法をテストできます。
$ app -> route ( ' /example ' , function () use ( $ app ){
if ( $ app -> action ( ' post ' ) ) {
// Do stuff on POST
} elseif ( $ app -> action ( ' get ' ) ) {
// Do stuff on GET
}
});ビューテンプレートは、 viewsディレクトリに保存されます。次のようなビュー(通常はコントローラーから)を呼び出すことができます。
$ app -> view ( ' my-template ' );これは、ビューフォルダーでmy-template.phpを探すだけで、ファイルが必要です。テンプレートファイルに変数がある場合、これらを次のようなビューメソッドに渡す必要があります。
$ my_var1 = ' Stuff I want to echo in the template. ' ;
$ app -> view ( ' my-template ' , [
' my_var1 ' => $ my_var1
]);これで、 $my_var1ビューテンプレートファイル内でアクセスできます。
テンプレートエンジンを気にしません(PHPは本質的にテンプレート言語であるため)。このように、HTMLのバリエーションベスにアクセスするだけです。
< p > < ?=$my_var1;? > </ p >条件付きステートメント:
< ?php if ( isset($my_var1) ):? >
< p > < ?=$my_var1;? > </ p >
< ?php endif;? >あなたはアイデアを得ます。純粋でシンプルなPHPテンプレート。
デフォルトでは、フロントエンドはブートストラップを使用します。 frontendディレクトリにすべてのソースファイルを見つけることができます。 frontendフォルダーからソースファイルをビルドする手順は、プロジェクトルートのgulpfile.jsファイルで定義されています。
プロジェクトルートで初めてgulpを実行すると、SCSSとJavaScriptファイルが組み合わされ、削除され、 publicフォルダーにコピーされました。使用するベンダーJSおよびCSSファイル(jquery、bootstrapなど)もpublicフォルダーにコピーされます。
frontendディレクトリでSCSSおよびJavaScriptファイルを編集する前に、プロジェクトルートでgulp watchを実行できます。 Gulpは、ファイルに保存する変更を監視し、行くにつれてそれらを保存します。
models/Documents.phpクラスは、HTMLソースからPDFファイルを記述する1つの方法を提供します。このクラスはwkhtmltopdfを使用しており、機能する前にこれらの依存関係をインストールする必要がある場合があります。
sudo apt-get install xfonts-base xfonts-75dpi urw-fonts
より多くのPDFおよびその他の「ドキュメント」関連機能は、将来的に追加されます。
メインクラスを含むmodels/MVPHP.phpファイルを調べて、他の利用可能なユーティリティ方法をさらに掘り下げます。将来的にはさらに追加されます!