YAMF(さらに別のMVCフレームワーク)は、多くのセットアップ作業なしでMVCパラダイムをすばやく使用し始めるように設計された小さなPHP MVCフレームワークです。必要なのは、 .htaccessファイルを受け入れるWebサーバーだけで、行ってもいいです!
最小要件:PHP 7.0+。
Use this template ]ボタンをクリックして、リポジトリをクローンし、このプロジェクトを独自のプロジェクトのテンプレートとして使用します。config.phpを構成します。そこに必要なパラメーターを調整するか、セッションロジックなどの$appに新しいパラメーターを追加します。デフォルトでは、サイトをアップして実行するために何も調整する必要はありません。config-private.sample.phpをconfig-private.phpにコピーし、ニーズに合わせて調整します。たとえば、 $app->dbローカルデータベースのPDOインスタンスに設定できます。 config-private.php 、 config.phpの何かが行われる前にロードされることに注意してください。use Yamf/XYZには、作曲家を使用する必要があります。 Composerの使用は非常に簡単です。ダウンロードページに移動して、スクリプトを上部に実行してください。 (注:Windowsにいる場合は、イントロページで説明書に従うことをお勧めします。)composer install (ディレクトリにcomposer.pharファイルがある場合は、 php composer.phar installを実行します)。それは座って少し考えます。彼らはここにいません、そして彼らは意図的にここにいません! YAMFは、PHPでMVCパラダイムを使用するためのエントリーの障壁を下げるために、作曲家のオートローダー以外の外部依存関係を使用しないように意図的に書かれていました。それらのいずれかが必要な場合は、お気に入りの依存関係マネージャー(作曲家など)でそれらを引き込むだけです。作曲家はPSR-4オートローディングのためにこのプロジェクトを実行するためにすでに必要であるため、Composerを使用することをお勧めします。 vendor/autoload.php init.phpに既に含まれています。
ビューテンプレートに関するメモについては、サブクラス化のセクションを参照してください。
YAMFに関する次のドキュメントを読むと、自分でコードを読み込もうとするよりもはるかに良いでしょう。 :)数分しかかかりません、そしてそれは価値があります!
データベース設定などの構成パラメーターを簡単に渡すことを容易にするために、YAMFは各コントローラー関数にクラスYamfAppConfigの$app変数を渡します。この変数を設定して、データベースPDOオブジェクトを保存したり、ビュー拡張機能またはフォルダーの場所、その他多くの設定を変更したりできます。独自の値を$appに追加する場合は、 YamfAppConfigから派生したクラスを作成し、 config.phpのappConfigClass設定を変更してカスタムクラスを指すことができます。カスタムクラスはYamfAppConfigから派生する必要があることに注意してください! config.phpを参照して、 $appを介してyamfによって渡されるすべての設定と値を確認してください。特に、できます:
viewsFolderName )viewExtension )defaultHeaderName / defaultFooterName )config-private.phpで設定) $app 、ご意見で自動的に利用できます。
おそらく最初にやりたいことは、新しいルートを追加することです。それを行うには、次の手順に従います。
app/Controllersフォルダーに追加してください。サブフォルダーは大丈夫です。コントローラーは、実際にはControllerを名前にする必要はありませんが、クラス名がファイル名と一致することを確認してください。public関数でなければなりません: $appと$request (その順序で)。routes.phpを開き、ルートの仕組みのドキュメントと例を理解してください。routesアレイへのルートを追加します。POSTを指定してください。Parent-Folder/Controller-Name形式の名前があることを確認してください。Viewが機能していますが、コントローラーの方法は、何らかのyamf/Responses/Responseを返す必要があります。詳細については、次のセクションをご覧ください。yamf/Responses/Viewを返すことです。 viewsフォルダーでPHPファイル(ビュー)を作成します - 繰り返しますが、サブフォルダーは問題ありません - コントローラーメソッドでは、 return new View('name/of/view'); 。要するに:
app/Controllersフォルダーに追加しますroutes.phpへのルートを追加しますviewsフォルダーでビューを作成しますreturn new View('name/of/view');ルートの結果として呼び出されるすべてのコントローラーメソッドはyamf/Responses/Responseまたはそのクラスのサブクラスを返す必要があります。それぞれの使用方法に関するいくつかの説明を次に示します。ほとんどは、コンストラクターだけで1つのラインで使用できます。
Response - ルートからの応答の基本クラス。new Response($statusCode = 200)yamf/Responses/Response項目サブクラスなので、必要に応じてカスタムHTTPステータスコードを返すことができます!ErrorMessageビューの周りのシンプルなラッパーは、400ステータスコードとerror.phpビューを送り返します。new ErrorMessage($msg = '', $name = 'error', $title = '', $headerName = '', $footerName = '') 。 $nameビューの名前です。$errorです。サブクラスなしでこれを変更することはできません。views/header.phpとviews/footer.phpです。JsonResponseコントローラーからJSON応答を送り返す方法の例new JsonResponse($data, $jsonEncodeOptions = 0)echo json_encode($this->data, $this->jsonEncodeOptions);を介して$dataを出力します。NotFound -404のないメッセージをクライアントに返すために使用されます。new NotFound($name = '404', $data = [], $title = '', $headerName = '', $footerName = '') 。 $nameビューの名前です。views/header.phpとviews/footer.phpです。Responseを使用します。Redirect - 他のページまたはルートに302リダイレクトを可能にしますnew Redirect($redirectPath, $isInternalRedirect = true)$isInternalRedirectは、現在のWebサイト/ routes.phpデータ内のルートにリダイレクトするために使用されます。内部ルートにリダイレクトする場合は、次のようなRedirectを使用します。 new Redirect('/route/name); (開始/注意してください)。そうでない場合は、次のようなRedirectを使用します。 new Redirect('https://example.com', false); 。View - PHPベースのHTMLビューを返すために使用されます。new View($name, $data = [], $title = '', $headerName = '', $footerName = '') 。 $nameビューの名前です。compact機能を使用することです。サンプルのBlogController参照してください。views/header.phpとviews/footer.phpです。 YAMFに含める必要があるより多くのResponseタイプのアイデアがある場合は、機能要求を([問題]タブを介して)開くか、プルリクエストを開いてください!
2つの主要な変数が、ルートからコントローラーメソッドに送信されます: $appと$request 。すべてのView出力には、使用可能な$appと$request変数があることに注意してください。それらを$dataパラメーターとして送信する必要はありません。
AppConfig $app $app 、主にconfig.phpで設定した構成変数です。そのファイルを確認して、利用可能なものを一目で確認してください。より重要な項目のいくつかは次のとおりです。
$app->dbnullに設定して、使用しないようにすることができます。それらに加えて、 init.phpで設定された2つの変数があります。
$app->isLocalHostアプリケーションがローカルホストで実行されているかどうか( 127.0.0.1または::1 )$app->basePath現在のWebアプリケーションのベースディレクトリ。これを使用して、Webサーバー上のネストされたWebアプリケーションを許可できます。地元のWebサイトリンクを実行するときに、この変数をviewsで使用することを強くお勧めします。これにより、ファイルを動かしたり後で移動したりすると、すべてが壊れないものがすべて壊れないようにします。サイトの別のページにリンクするには、 $app->yurl(string) (yamf url)機能を使用してください。 <?= $app->yurl('/path/to/page') ?> $request $requestは、ルートに関するすべてのデータと、リクエストに伴うさまざまなパラメーターがあります。タイプyamf/Requestです。これらの公開メンバーを利用できます。
$request->route - このリクエストのRAWルート文字列$request->controller - コントローラーの文字列名$request->functionコントローラー関数の文字列名を呼び出します$request->routeParams {id}などのルート内のパラメーション。形式:['id' =>値]$request->get任意のget paramsがurlで見つかった - $ _getと同じ形式(追加の処理は実行されません)$request->post任意の投稿パラメーション - $ _postと同じ形式(追加の処理は実行されません)$request->anchor使用する場合、URLの#部分(#なし)。ルーターは/blah/#/fooのようなURLに一致しないほどスマートです。このフレームワークを拡張するための最も簡単な方法は、 Response (またはその他のResponseの子クラス)から派生し、一部のコントローラーの親クラスを作成することです。たとえば、 Viewから派生することにより、ビュー出力を変更して、単純なPHP出力ではなくTwigテンプレートエンジンを使用できます。コントローラーの親クラスを作成することにより、ユーザー名/パスワードやトークンの確認など、すべてのAPIルートで発生する必要があるデータの検証やその他の追加処理などを追加できます。オプションは無限であり、可能性があります!
Twigブランチに生のPHPの代わりに小枝を使用する例があります!
YAMFがサポートする気の利いた機能の1つはrouteまたはcontrollerを必要としない静的なWebページです。単純なページになり/about場合は、 views/static/フォルダーと-bamにabout.phpページを投げてください! - /about 。 /blog/post-nameのようなサブフォルダーはどうですか?それも機能します! views/static/blog/post-name.phpファイルを追加すると、機能します(TM)!これを使用して、ルートやコントローラーを追加することに迷惑をかけることなく、WebサイトにかなりのURLを使用できます。
config.phpで静的ビューの場所を構成できます。
ルーターは、静的ページをチェックする前にrouter.phpルートを一致させようとすることに注意してください。
すぐに有効にされないルーターがサポートする機能は、URL https://example.com/short-urlです。データベース接続が必要ですが、データベース接続を追加して適切なデータベーステーブル(スキーマはconfig.sample.php )を持っている場合、必要に応じてURL短縮を使用できます。この機能を有効にする必要はありません。
config.sample.phpにコメントしたデフォルトのセッションロジックを含めました。自由に使用したり、変更したり、捨てたりしてください。この機能を改善する方法について提案がある場合は、プルリクエストまたは問題を開いて、さらなる議論を生成してください。
尋ねてよかった!オープンソースプロジェクトでできることは常にあります:バグ、新機能などを修正してください!このリポジトリの[問題]タブをご覧になり、バグが報告されているものと要求された機能をご覧ください。貢献ドキュメントには、貢献に関する情報がいくつかあります。
MITライセンス。サイトで使用するときは、このフレームワークのライセンスを(GitHubリンクとともにgithubリンクとともに)含めるようにしてください。ありがとう! :)
サンプルで使用されているブートストラップペーパーのテーマについては、Bootswatchに感謝します。