Lithiumを使用してWebアプリを作成する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
リチウムについて
Lithium は、Webアプリケーションを開発するためのフルスタックPHPフレームワークです。 Model-View-Controller(MVC)アーキテクチャに基づいており、PHP 5.3以降用に構築されており、MongoDBやCouchDBなどの最新のストレージテクノロジーと統合されています。
優れたプロジェクト編成と、独自のWebアプリケーションを開発する際のフレームワークからのコーディングの可能性の両方を提供するように設計されています。 さらに、フレームワークの外部からお気に入りのコンポーネント(テンプレート用のTwigやORM用のDoctrine2など)を使用できる堅牢なプラグインシステムを備えています。
このチュートリアルでは、LithiumをUbuntu 12.04 VPS にインストールし、Webアプリケーションの構築に必要なすべての要件を構成したときに中断したところから続行します。 覚えているかと思いますが、MySQLデータベースも接続し、「HelloWorld」をページに印刷する方法を垣間見ることができました。 次に、3つのMVCコンポーネント(モデル、ビュー、コントローラー)をLithiumフレームワークと一緒に使用する方法を説明します。
コントローラ
単純なコントローラークラス( HelloController )とそのインデックス(つまり、デフォルト)メソッドが実際に動作しているのを見てきました。 さらに3つのMVC関連の側面を説明するために、これに基づいて構築を続けます。
-
他のコントローラークラスメソッドの使用と、それらがブラウザーで呼び出すURLとどのように関連しているか
-
ビューに表示されるコントローラーからの情報の受け渡し(これは、コントローラーメソッドから直接エコー文字列を使用するのではなく、ベストプラクティスです)。
-
データベース内のデータを表すモデルを作成する
ルーティング
コントローラーがブラウザーでアクセスする必要のあるURLにどのようにマップされるかを説明するために、HelloControllerで別のメソッドを作成してみましょう。
public function goodbye() {
echo "Goodbye!";
}
ブラウザでyour-ip/sites/hello/goodbye
をポイントすると、画面に「さようなら」という言葉が印刷されます。 これは、Lithiumのデフォルトのルーティング動作であり、渡す最初のurlパラメーターはコントローラーの名前です( こんにちは <-「Controller」という単語がないことに注意してください)、2番目はメソッドの名前です( さようなら )。
さらに進んで、次のようにメソッドにパラメータを渡すこともできます。
public function goodbye($name) {
echo "Goodbye " . $name . '!';
}
次に、ブラウザでyour-ip/sites/hello/goodbye/danny
を指定すると、「さようならダニー!」と印刷されます。 画面上。 したがって、これは非常に便利で論理的であり、CodeIgniterと同様に機能します。
これは簡単かもしれませんが、すべてのプロジェクトのニーズを満たすわけではありません。 その場合、必要に応じて、カスタムルーティングルールを定義し、URLをコントローラーメソッドにマップすることができます。 Lithiumドキュメントサイトの詳細情報をお読みください。
ビュー
前述したように、MVCアーキテクチャはプレゼンテーションからのロジックの分離を促進するため、LithiumViewsを使用してHelloController
クラスで構築された情報を表示する方法を見てみましょう。 前に作成したgoodbye()
メソッドに戻り、ビューに出力されたパラメーター($name
)を渡す必要があると仮定します。
最初に行う必要があるのは、このメソッドに変数をビューに渡すことです。 これを実現する方法の1つは、キーと値の連想配列を返すことです。 したがって、goodbye()
メソッドを次のように変更します。
public function goodbye($name) {
return array(
'name' => $name,
);
}
ご覧のとおり、このメソッドが行うのは、(URLから渡された)変数を含む配列を返すことだけです。 $name
変数と相関するキーは、変数として出力するためにビューで使用可能になります。
それでは、先に進んで、app / views /フォルダーに、コントローラーメソッドと同じ名前で、コントローラーにちなんで名付けられたフォルダーにあるビューファイルを作成しましょう。 したがって、この場合は(プロジェクトのルートフォルダーにある間)次のようになります。
nano app/views/hello/goodbye.html.php
このファイル内に以下を貼り付けます。
<h1>Goodbye <?=$name;?>!</h1>
前のURLに移動すると:
your-ip/sites/hello/goodbye/danny
ヘッダータグの間に、コントローラーに渡された$name
変数が、ビューに渡されて出力された様子が表示されます。 もう1つの優れた点は、値がLithiumによって自動的にエスケープされることです。
また、デフォルトでLithiumに付属している既存のレイアウト(上部に小さなメニューなど)の中にビューが挿入されていることにも気付くでしょう。 ただし、ビューとレイアウトの使用の詳細については、Lithiumドキュメントを確認してください。
モデル
リクエストをルーティングして情報を表示する方法を見てきたので、それを表すモデルを作成して、データベースから情報を取得する方法を見てみましょう。 そして、コンベンションはリチウムで大いに役立つので、いくつかの素晴らしい結果を見る前に、私たちは多くのことをする必要はありません。
まず、データベースとテーブルが含まれていることを確認します。 私のニュースと呼びます。id、title、bodyの3つの列があります。 さらに、このテーブルにダミーコンテンツを入力して、何か試してみることができます。 MySQLの操作の詳細については、DigitalOceanでこのすばらしいチュートリアルを読むことができます。 ただし、Lithiumでは他のストレージエンジンを使用するオプションがあることを忘れないでください。
速度を上げるために、次のコマンドを実行して、MySQLサーバーにログインした後、コマンドラインからこのテーブルをすばやく作成できます。
CREATE TABLE `news` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`body` text NOT NULL,
PRIMARY KEY (`id`)
);
また、次の2つのコマンドを使用して、2つのダミー行を挿入することもできます。
INSERT INTO `news` (title, body) VALUES ('This is the first news article', 'some article body');
INSERT INTO `news` (title, body) VALUES ('This is other news', 'some more article body');
コンテンツができたので、app /models/フォルダーにモデルクラスを保持するNews.phpファイルを作成しましょう。
nano app/models/News.php
内部に、以下を貼り付けます。
<?php
namespace app\models;
class News extends \lithium\data\Model {
}
?>
今のところ、このファイルに必要なのはそれだけです。 拡張する基本クラスは、データを操作するために使用できる多くのメソッドを提供します。
HelloController
クラスに戻り、クラス宣言の上に次の行を追加します。
use app\models\News;
次に、クラス内に別のメソッドを追加しましょう。
public function news($id) {
$news = News::first(array(
'conditions' => array('id' => $id)
));
return array(
'news' => $news->data()
);
}
このメソッドは、URL(ニュースID)からパラメーターを取得し、そのIDを持つニュースを取得して、結果をビューに渡します。 Lithium Model基本クラスを使用してfind()
メソッドを使用してクエリを実行し、data()
メソッドを使用して結果のオブジェクトでデータにアクセスします。 次に、ニュース記事を表示するビューを作成しましょう。
nano app/views/hello/news.html.php
そして、以下を貼り付けます。
<h1><?=$news['title'];?></h1>
<p><?=$news['body'];?></p>
これらの変更を行うときは、構成ファイルに正しいMySQLクレデンシャルがあることを確認してください。
nano /var/www/site/app/config/bootstrap/connections.php
ご覧のとおり、$news
変数は、テーブルの列にちなんで名付けられたキーを持つ配列です。 きちんとした。 次に、ブラウザで次のURLを指定します。
your-ip/site/hello/news/1
そして、あなたは最初のニュース記事を見るはずです。 最後の引数として2
を渡すと、2番目のニュース記事などが表示されます。 リチウムモデルの使用の詳細については、それぞれのドキュメントこちらをお読みください。
結論
このチュートリアルでは、Lithiumを少し試して、基本的なルーティングシステムがどのように機能し、URLがコントローラーリクエストにどのように変換されるかを学びました。 さらに、ビューを操作してコントローラーから渡された情報を表示する方法と、モデルを使用してデータベース情報を統合する方法を見てきました。