ホームページ >バックエンド開発 >PHPチュートリアル >リチウムフレームワーク:開始
リチウムは、Webアプリケーション開発にモデルビューコントローラー(MVC)アーキテクチャを使用するPHP 5.3以降に適した柔軟なPHPフレームワークです。
Lithiumは、この記事で説明するモデル-View-Controller(MVC)アーキテクチャを使用します。このフレームワークを使用して、アプリケーションのビジネスと表現ロジックをどのように定義するかを示します。次の手順を実行します:
URLリクエストをルーティングするためにコントローラーを設定します。このコントローラーは、データモデルを使用して、データベースからいくつかの情報を取得および処理します。この情報は、ビューを使用してブラウザに表示されます。これらはすべて標準的なMVCプロセスですが、リチウムで実行することは喜びです。
サーバーにフレームワークが設定されていると仮定します。少なくとも、URLに移動すると、デフォルトアプリケーションの起動ページが表示されます。さらに、いくつかの情報を含むデータベースが必要です。 MySQLを使用しますが、LithiumはMongodbやCouchDBなどの他の多くのストレージシステムをサポートしています。
学習を続けたい場合は、Gitリポジトリをセットアップしました。クローンできます。マスターブランチには通常のリチウムフレームワークが含まれていますが、MVCブランチにはこの記事のコードが含まれています。リチウムサブモジュールを初期化して更新することを忘れないでください。データベースに接続するには、App/config/bootstrapフォルダーにあるconnections_default.phpファイルをコピーし、connections.phpに名前を変更します。次に、資格情報をファイルに追加します。
始めましょう。
データ興味深いMVCコンテンツを入力する前に、データベースにテーブルをいくつかの情報を追加しましょう。仮想ページデータを使用するため、私のテーブル(名前付きページ)には、ID列(int、auto-increment and primaryキー)、タイトル列(Varchar 255)、コンテンツ列(テキスト)、作成された列( int)。この表には、サンプルデータの2列があります。手順を正確にフォローしたい場合は、テーブル作成ステートメントを次に示します。
<code class="language-sql">CREATE TABLE `pages` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `content` text, `created` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
以下は私の仮想データラインです:
<code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`) VALUES (1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745), (2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>もちろん、他のデータを使用できます。
cはコントローラーの略 です
コントローラーは、おそらくMVCフレームワークの最も重要な部分です。それらの目的は、アプリケーションルーティングシステムによってルーティングされたリクエストを処理することです。アプリのアプリ/コントローラー/フォルダーを見ると、これがコントローラーを配置する必要がある場所であることがわかります。 Sitecontroller.php(各コントローラークラスは独自のファイルにある)という新しいファイルを作成し、次のクラス宣言を貼り付けて開始します。
ご覧のとおり、リチウムベースコントローラークラスをSiteControllerと呼ばれる独自のクラスに拡張します。このクラスでは、URLから要求するときに必要なロジックを実行するメソッドを作成できます。それが実際にどのように適用されるかを確認しますが、最初に、ルーティングの仕組みを理解しましょう。
<code class="language-php"><?php namespace app\controllers; class SiteController extends \lithium\action\Controller { }</code>
デフォルトでは、URLを構築するときに、コントローラーのクラス名(この場合)、メソッド、およびパラメーターにマッピングするパラメーターを使用します。メソッド名が渡されない場合、リチウムはそれ自体でindex()という名前のメソッドを想定します。したがって、http://example.com/site/に移動すると、リチウムがこの方法を探して電話します。ここで、パラメーター($ ID)を取るView()というメソッドがあるとします。コントローラーメソッドを呼び出すURLはhttp://example.com/site/view/1です。ビューはメソッドの名前であり、1は関数に渡されたパラメーターです。メソッドがより多くのパラメーターを取得する場合、URLのスラッシュ(/)でパラメーターを分離するだけです。
しかし、私が言ったように、これはデフォルトの動作です。詳細を制御するには、/app/config/routes.phpファイルで独自のルートを定義できます。詳細は説明しませんが、対応するドキュメントページの詳細については詳細を確認できます。
次に、仮想データベースから個々のページを表示する責任があるページ()メソッドを作成しましょう。
上記の上記では、データベースページ情報をシミュレートし、配列に保存します。次に、この配列をコントローラーのset()メソッド(継承)に渡し、ビューに送信します。または、set()メソッドを使用する代わりに、$データアレイを返すことができます。ただし、どちらの場合も、配列のキーは変数名を表し、ビューファイルからアクセスできます。それがどのように機能するか見てみましょう。
<code class="language-php">public function page() { // 模拟页面信息。 $title = 'My awesome page title'; $content = 'My awesome page content. Yes indeed.'; $created = '10 April 2014'; // 准备页面信息以传递给视图。 $data = array( 'title' => $title, 'content' => $content, 'created' => $created, ); // 将数据传递给视图。 $this->set($data); }</code>(次の内容は元のテキストに似ていますが、ステートメントは調整および書き直され、元の意図を維持し、重複するコードブロックを回避しています)
vビュー
の略ですビューは、MVCフレームワークのプレゼンテーションレイヤーです。それらは、アプリケーションのビジネスロジックを表現から分離し、ブラウザに表示されるコンテンツの簡単なテーマを可能にするために使用されます。 ページ情報を表示するビューを作成しましょう。アプリ/ビュー/フォルダーでは、それを使用するコントローラークラスにちなんで名付けられた別のフォルダーを作成する必要があります(この場合)。このフォルダーでは、.html.php拡張子が添付されたメソッド自体にちなんで名前が付けられたファイルを作成する必要があります。これは、リチウムの名前ビューであるコンベンションであり、コントローラーに簡単に接続できます。 ページの例では、新しいファイルはapp/views/site/page.html.phpに配置されます。
あなたが推測したかもしれないように、ここにいくつかの基本的なタグがあります。ここでは、コントローラーから配列キーを渡すことに名前が付けられた変数を印刷します。 Lithiumは、この構文を使用して変数を印刷します。これは、HTMLのクリーンアップを担当する$ H()関数を介して実行するためです。ただし、これは印刷変数にのみ適用され、このオブジェクト$のプロパティではありません。
リチウムのレイアウトは、タイトルやフッターなどの一般的に使用されるタグを使用してコンテンツをラップするために使用されます。それらはアプリ/レイアウトフォルダーにあり、$ this&gt; content()を使用してビューをレンダリングします。私たちのビューは、デフォルトでdefault.html.phpレイアウトでレンダリングされますが、必要に応じて別のレイアウトを指定できます。このコントローラーのすべてのメソッドに適用されるクラス属性として、または次のようなメソッド自体に適用されるクラス属性として、これをコントローラーから実行できます。
デモの目的に適しているため、デフォルトのレイアウトに固執します。 の略です
モデルクラスは、データベース内のコンテンツを定義および処理するため、MVCフレームワークの非常に重要な部分です。また、アプリケーションがこのデータでCRUD(作成、読み取り、更新、削除)を簡単に実行できるようにします。リチウムでどのように機能するか見てみましょう。
最初に行う必要があることは、アプリ/モデルフォルダーでpages.phpというクラスファイルを作成し、次のことを貼り付けます。
基本モデルクラスを拡張し、そのすべての方法を使用しました。モデルクラス名は、関連するレコードを含むデータベーステーブルと一致する必要があります。したがって、あなたのページがページでない場合は、リチウムが自動的にこの命名を取得して作業を簡素化するため、必ず調整してください。 次に、このファイルをコントローラーのクラスファイルに含める必要があるので、名前空間宣言の下に次のことを貼り付けてください: 次は、ページ()メソッドのモックコンテンツを削除し、この関数が$ IDパラメーターを渡して、取得する必要があるページがわかるようにすることです。残された簡単なタスクは、ページレコードを照会し、結果をビューに渡すことです。したがって、変更されたページ()メソッドは次のようになります: モデル親クラスの最初の()メソッドを使用して、条件を使用して照会します。結果は、data()メソッドを使用してレコードデータを取得するオブジェクトです。このデータは、テーブル列の名前がキーとして配列を使用します。残りは以前と同じですが、データベースから得られるものがUNIXタイムスタンプであるため、PHP Date()関数を使用して作成されたフィールドをフォーマットすることを除きます。それでおしまい。 <code class="language-sql">CREATE TABLE `pages` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text,
`created` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
これまでに行ったことをテストするには、http://example.com/site/pageに移動すると、シミュレーション情報を示す素敵なページが表示されます。また、単純なビューがより複雑なレイアウト(フレームワークに伴うデフォルトのレイアウト)でレンダリングされていることに気付くでしょう。 <code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`)
VALUES
(1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745),
(2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>
<code class="language-sql">CREATE TABLE `pages` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text,
`created` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
<code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`)
VALUES
(1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745),
(2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>
結論 このチュートリアルでは、リチウムMVCフレームワークを理解して使用することがどれほど簡単かを見ました。コントローラー、ビュー、モデルを定義する方法と、それらを一緒に使用して、きちんとした個別のアプリケーションフローを作成する方法を学びました。また、リチウム協定がどれほど有用であるかがわかりました。気付いていなくても、データベースコンテンツを抽象化し、簡単にアクセスできるように公開します。
あなたが何かを学び、リチウムが提供する他の強力な特徴をより深く掘り下げることに興味があることを願っています。組み込みのCRUDメソッドとは何ですか?それらを拡張する方法は?独自のカスタムルートを定義する方法は?視界でも、複数のレイアウトを使用して小さな要素をレンダリングするにはどうすればよいですか?これらは、リチウムが当社のWebアプリケーションに提供する強力な機能であり、試してみる価値があります。
私はあなたの好奇心を喚起しましたか?この優れたフレームワークについてもっと知りたいですか?
(FAQパーツは元のテキストと同じで、変更は必要ありません)以上がリチウムフレームワーク:開始の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。