ホームページ バックエンド開発 PHPチュートリアル リチウムフレームワーク:開始

リチウムフレームワーク:開始

Feb 21, 2025 am 10:46 AM

Lithium Framework: Getting Started

リチウムフレームワークの初心者:キーポイント

リチウムは、Webアプリケーション開発にモデルビューコントローラー(MVC)アーキテクチャを使用するPHP 5.3以降に適した柔軟なPHPフレームワークです。
  • コントローラーは、アプリケーションルーティングシステムによってルーティングされたリクエストを処理します。ビューは、ビジネスロジックをプレゼンテーションから分離し、ブラウザに表示されるコンテンツの簡単なテーマを可能にするプレゼンテーションレイヤーです。このモデルは、データベース内のコンテンツを定義および処理し、CRUD(作成、読み取り、更新、削除)操作を簡単にします。
  • リチウムは、MySQL、MongoDB、CouchDBを含むさまざまなデータベースをサポートしています。このフレームワークには、エンジンに優しいURLを簡潔で検索することを可能にする強力なルーティングシステムもあります。
  • リチウムの慣習は簡単になります。組み込みのCRUDメソッドを提供し、カスタムルーティングを可能にし、複数のレイアウトをサポートし、ビュー内のより小さな要素をレンダリングします。これらの機能により、リチウムはWebアプリケーション開発のための強力なツールになります。
  • リチウムは、PHP 5.3以上に適したシンプルで効率的なPHPフレームワークです。制限が強すぎずにWebアプリケーションを起動するための優れたツールセットを提供するように設計されています。

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列があります。手順を正確にフォローしたい場合は、テーブル作成ステートメントを次に示します。

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;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

以下は私の仮想データラインです:

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);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
もちろん、他のデータを使用できます。

cはコントローラーの略 です

コントローラーは、おそらくMVCフレームワークの最も重要な部分です。それらの目的は、アプリケーションルーティングシステムによってルーティングされたリクエストを処理することです。

アプリのアプリ/コントローラー/フォルダーを見ると、これがコントローラーを配置する必要がある場所であることがわかります。 Sitecontroller.php(各コントローラークラスは独自のファイルにある)という新しいファイルを作成し、次のクラス宣言を貼り付けて開始します。

ご覧のとおり、リチウムベースコントローラークラスをSiteControllerと呼ばれる独自のクラスに拡張します。このクラスでは、URLから要求するときに必要なロジックを実行するメソッドを作成できます。それが実際にどのように適用されるかを確認しますが、最初に、ルーティングの仕組みを理解しましょう。
<?php namespace app\controllers;

class SiteController extends \lithium\action\Controller {

}
ログイン後にコピー

デフォルトでは、URLを構築するときに、コントローラーのクラス名(この場合)、メソッド、およびパラメーターにマッピングするパラメーターを使用します。メソッド名が渡されない場合、リチウムはそれ自体でindex()という名前のメソッドを想定します。したがって、http://example.com/site/に移動すると、リチウムがこの方法を探して電話します。ここで、パラメーター($ ID)を取るView()というメソッドがあるとします。コントローラーメソッドを呼び出すURLはhttp://example.com/site/view/1です。ビューはメソッドの名前であり、1は関数に渡されたパラメーターです。メソッドがより多くのパラメーターを取得する場合、URLのスラッシュ(/)でパラメーターを分離するだけです。

しかし、私が言ったように、これはデフォルトの動作です。詳細を制御するには、/app/config/routes.phpファイルで独自のルートを定義できます。詳細は説明しませんが、対応するドキュメントページの詳細については詳細を確認できます。

次に、仮想データベースから個々のページを表示する責任があるページ()メソッドを作成しましょう。

上記の上記では、データベースページ情報をシミュレートし、配列に保存します。次に、この配列をコントローラーのset()メソッド(継承)に渡し、ビューに送信します。または、set()メソッドを使用する代わりに、$データアレイを返すことができます。ただし、どちらの場合も、配列のキーは変数名を表し、ビューファイルからアクセスできます。それがどのように機能するか見てみましょう。

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);

}
ログイン後にコピー
(次の内容は元のテキストに似ていますが、ステートメントは調整および書き直され、元の意図を維持し、重複するコードブロックを回避しています)

vビュー

の略です

ビューは、MVCフレームワークのプレゼンテーションレイヤーです。それらは、アプリケーションのビジネスロジックを表現から分離し、ブラウザに表示されるコンテンツの簡単なテーマを可能にするために使用されます。

ページ情報を表示するビューを作成しましょう。アプリ/ビュー/フォルダーでは、それを使用するコントローラークラスにちなんで名付けられた別のフォルダーを作成する必要があります(この場合)。このフォルダーでは、.html.php拡張子が添付されたメソッド自体にちなんで名前が付けられたファイルを作成する必要があります。これは、リチウムの名前ビューであるコンベンションであり、コントローラーに簡単に接続できます。

ページの例では、新しいファイルはapp/views/site/page.html.phpに配置されます。

このファイルでは、次のファイルを貼り付けます

あなたが推測したかもしれないように、ここにいくつかの基本的なタグがあります。ここでは、コントローラーから配列キーを渡すことに名前が付けられた変数を印刷します。 Lithiumは、この構文を使用して変数を印刷します。これは、HTMLのクリーンアップを担当する$ H()関数を介して実行するためです。ただし、これは印刷変数にのみ適用され、このオブジェクト$のプロパティではありません。

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;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これまでに行ったことをテストするには、http://example.com/site/pageに移動すると、シミュレーション情報を示す素敵なページが表示されます。また、単純なビューがより複雑なレイアウト(フレームワークに伴うデフォルトのレイアウト)でレンダリングされていることに気付くでしょう。

リチウムのレイアウトは、タイトルやフッターなどの一般的に使用されるタグを使用してコンテンツをラップするために使用されます。それらはアプリ/レイアウトフォルダーにあり、$ this&gt; content()を使用してビューをレンダリングします。私たちのビューは、デフォルトでdefault.html.phpレイアウトでレンダリングされますが、必要に応じて別のレイアウトを指定できます。このコントローラーのすべてのメソッドに適用されるクラス属性として、または次のようなメソッド自体に適用されるクラス属性として、これをコントローラーから実行できます。

デモの目的に適しているため、デフォルトのレイアウトに固執します。

mはモデル
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);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

の略です

リクエストと表現のロジックが処理されたので、シミュレートされたページデータを仮想データベースコンテンツに置き換える時が来ました。モデルを使用して、この情報を抽象化して簡単にアクセスします。

モデルクラスは、データベース内のコンテンツを定義および処理するため、MVCフレームワークの非常に重要な部分です。また、アプリケーションがこのデータでCRUD(作成、読み取り、更新、削除)を簡単に実行できるようにします。リチウムでどのように機能するか見てみましょう。 最初に行う必要があることは、アプリ/モデルフォルダーでpages.phpというクラスファイルを作成し、次のことを貼り付けます。

基本モデルクラスを拡張し、そのすべての方法を使用しました。モデルクラス名は、関連するレコードを含むデータベーステーブルと一致する必要があります。したがって、あなたのページがページでない場合は、リチウムが自動的にこの命名を取得して作業を簡素化するため、必ず調整してください。

次に、このファイルをコントローラーのクラスファイルに含める必要があるので、名前空間宣言の下に次のことを貼り付けてください:

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;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次は、ページ()メソッドのモックコンテンツを削除し、この関数が$ IDパラメーターを渡して、取得する必要があるページがわかるようにすることです。残された簡単なタスクは、ページレコードを照会し、結果をビューに渡すことです。したがって、変更されたページ()メソッドは次のようになります:

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);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

モデル親クラスの最初の()メソッドを使用して、条件を使用して照会します。結果は、data()メソッドを使用してレコードデータを取得するオブジェクトです。このデータは、テーブル列の名前がキーとして配列を使用します。残りは以前と同じですが、データベースから得られるものがUNIXタイムスタンプであるため、PHP Date()関数を使用して作成されたフィールドをフォーマットすることを除きます。それでおしまい。

結論 このチュートリアルでは、リチウムMVCフレームワークを理解して使用することがどれほど簡単かを見ました。コントローラー、ビュー、モデルを定義する方法と、それらを一緒に使用して、きちんとした個別のアプリケーションフローを作成する方法を学びました。また、リチウム協定がどれほど有用であるかがわかりました。気付いていなくても、データベースコンテンツを抽象化し、簡単にアクセスできるように公開します。

あなたが何かを学び、リチウムが提供する他の強力な特徴をより深く掘り下げることに興味があることを願っています。組み込みのCRUDメソッドとは何ですか?それらを拡張する方法は?独自のカスタムルートを定義する方法は?視界でも、複数のレイアウトを使用して小さな要素をレンダリングするにはどうすればよいですか?これらは、リチウムが当社のWebアプリケーションに提供する強力な機能であり、試してみる価値があります。

私はあなたの好奇心を喚起しましたか?この優れたフレームワークについてもっと知りたいですか?

(FAQパーツは元のテキストと同じで、変更は必要ありません)

以上がリチウムフレームワーク:開始の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

REST APIデザインの原則とは何ですか? REST APIデザインの原則とは何ですか? Apr 04, 2025 am 12:01 AM

Restapiの設計原則には、リソース定義、URI設計、HTTPメソッドの使用、ステータスコードの使用、バージョンコントロール、およびHATEOASが含まれます。 1。リソースは名詞で表され、階層で維持される必要があります。 2。HTTPメソッドは、GETを使用してリソースを取得するなど、セマンティクスに準拠する必要があります。 3.ステータスコードは、404など、リソースが存在しないことを意味します。 4。バージョン制御は、URIまたはヘッダーを介して実装できます。 5。それに応じてリンクを介してhateoasブーツクライアント操作をブーツします。

PHPで例外を効果的に処理する方法(試して、キャッチ、最後に、スロー)? PHPで例外を効果的に処理する方法(試して、キャッチ、最後に、スロー)? Apr 05, 2025 am 12:03 AM

PHPでは、Try、Catch、最後にキーワードをスローすることにより、例外処理が達成されます。 1)TRYブロックは、例外をスローする可能性のあるコードを囲みます。 2)キャッチブロックは例外を処理します。 3)最後にブロックは、コードが常に実行されることを保証します。 4)スローは、例外を手動でスローするために使用されます。これらのメカニズムは、コードの堅牢性と保守性を向上させるのに役立ちます。

PHPの匿名クラスとは何ですか?また、いつ使用できますか? PHPの匿名クラスとは何ですか?また、いつ使用できますか? Apr 04, 2025 am 12:02 AM

PHPの匿名クラスの主な機能は、1回限りのオブジェクトを作成することです。 1.匿名クラスでは、名前のないクラスをコードで直接定義することができます。これは、一時的な要件に適しています。 2。クラスを継承したり、インターフェイスを実装して柔軟性を高めることができます。 3.使用時にパフォーマンスとコードの読みやすさに注意し、同じ匿名のクラスを繰り返し定義しないようにします。

See all articles