9

Kohana 3で中規模のWebアプリケーションをセットアップする方法についてのアドバイス、チュートリアル、リンクを探しています。過去にMVCパターンを実装したことがありますが、「正式な」MVCフレームワークに対して作業したことがないため、まだ取得しています。基本的な例をいじったり、ビューやテンプレートを作成したりするなど、用語を確認してください。

私はかなり順調に進んでいますが、学習オブジェクトとして実際のWebプロジェクト(私がかなり前から計画していたものの1つ)を設定したいと思います。

私は例によって最もよく学びますが、例に基づくドキュメントは、現在、Kohana3では少しまばらです-彼らはサイトでそう言っています。フレームワークを学習することについて心配する必要はありませんが、コードベースが最初から健全に構造化されていることを確認したいと思います。つまり、コントローラーは適切に分割され、適切な名前が付けられ、標準に従っています。最も重要なのは、ビジネスロジックが適切なサイズのモデルに分けられます。

私のアプリケーションは、基本的に、さまざまな検索および一覧表示機能を備えたビジネスディレクトリ、および各エントリ所有者のログイン領域として説明できます。実際の管理データベースバックエンドはすでに処理されています。

すべてのAPIが機能し、すでに配置されていると仮定します-すべてのビジネスの一覧表示、ビジネスの編集、ストリート名によるビジネスの一覧表示、ビジネスとしてログインしたオファーの作成など、機能をに適合させる方法を探していますMVCパターンと、簡単に拡張できるコハナアプリケーション構造に変換します。

  • ディレクトリやオンラインコミュニティなどの「データベースを多用する」アプリケーションの実際の例を知っていますか...Kohana3上に構築されたログインエリア、できればオープンソースを使用して、それらの方法を確認できますか?

  • ビジネスディレクトリページだけでなく、別のページのその他の製品も処理できる、Kohanaプロジェクトのエンドユーザー用の拡張可能なログイン領域を構築する方法に関する規則やベストプラクティスはありますか?

  • Kohanaを使用して複雑なアプリケーションを構築するための優れたリソースを知っていますか?

  • 似たようなものを作って、プロジェクトの構造についてアドバイスをいただけますか?

バウンティ

@antpawは、多くの例を示しているビジネスロジックを備えたKohanaアプリケーションを提供してくれたので、賞金を授与しています。@Pixel Developerにも、すばらしいご意見をお寄せいただきありがとうございます。多くの場合、賞金を分割できるといいのですが。

4

2 に答える 2

12

ここで答えなければならない質問がたくさんあります。私は最善を尽くします。

ディレクトリやオンライン コミュニティなどの「データベースを多用する」アプリケーションの実際の例をご存知ですか?

いくつかのサンプル アプリケーションがあります。Woody Gilk (Kohana の創設者) は、コードをgithubの個人 Web サイトに公開しています。ログイン領域には、Cookie 値を割り当てます。Kohana 3 / 2.4 は Cookie に署名します。これにより、Cookie が安全になり、セッションの要件がなくなります。これは万人の好みではないかもしれないので、セッションと Cookie の両方を使用する組み込みの認証ライブラリをいつでも使用できます。

あなたが興味を持っているかもしれないいくつかの他のプロジェクトはここにあります:

  • Shindig - kohana 3 用の軽量ブログモジュール
  • Kohanut - Kohana 3 で書かれた拡張可能な CMS

ビジネスディレクトリページだけでなく、別のページの他の製品も処理できるKohanaプロジェクトで、エンドユーザー向けの拡張可能なログイン領域を構築する方法に関する規則またはベストプラクティスはありますか?

おっしゃる通り、これらのページごとにログイン ボックスを生成しますか? Kohana 3では HMVCのHを利用できるため、これは簡単です。Sam de Fressyinet は、iBuilding Tech Blog で、これについて詳しく説明した記事を書きました。HMVC を使用した Web アプリケーションのスケーリング

次にできることは、ログイン コントローラーまたはアクションへの内部要求を実行し、応答をビュー ページにダンプすることです。

$login = Request::factory('login')->execute()->response;

$login にはログイン フォームが含まれるようになり、好きな場所に配置できます。リクエストが内部の場合、別のレスポンスを返したい場合があるため、このコードが役立ちます。

if (Request::instance() !== $this->request)
{
    print 'Internal called made with Request::factory';
}

Kohana を使用して複雑なアプリケーションを構築するための優れたリソースを知っていますか?

複雑なアプリケーションを構築する方法を示すドキュメントはありません。Kohana コミュニティの見解は、あなたが PHP 開発者であり、これらの問題を自分で解決できるべきだというものです。できない場合は、Kohana を使用するべきではありません。

似たようなものを構築したことがありますか? また、プロジェクト構造に関する推奨事項を教えていただけますか?

Kohana 3 がファイルを検索する方法を理解すれば、物事は簡単に理解できます。

|- classes
|-- controller
|-- model
|- views

例えば:

Controller_Mathew extends Controller 

で呼び出されるファイルを探しますmathew.php

classes/controller

アンダースコアを使用して、より深いディレクトリを指定できます。例:

Controller_Mathew_Davies extends Controller

で呼び出されたファイルを探しますdavies.php

classes/controller/mathew/

ご覧のとおり、コントローラー名のアンダースコアはディレクトリの区切り記号として機能します。これは、モデルとバニラ クラスに当てはまります。

于 2010-03-18T14:26:22.757 に答える
7

ログインには kohana に付属の認証モジュールを使用します。これにより、可能な権限オプションを設定し、後でそれらをユーザーに関連付けることができる役割テーブルが提供されます。その後、各コントローラーの __constructor() または action_function() 内で、ユーザーが必要な役割を持っているかどうかを、たとえば ->has() 関数で確認できます。テーブル間に多くの関係があるため、ORM モジュールも使用する必要があります。また、ORM オブジェクト内の __get() メソッドは非常に便利です。

新しいパラメーターを NULL に設定し、if ステートメントでそれをチェックすることで、コントローラー関数を拡張することも非常に簡単です。たとえば、古いエントリを編集したり、新しいエントリを追加したりするために必要な関数は 1 つだけです。

public funciton action_manage($id = NULL)
{
    $entry = ORM::factory('entry', $id); // if id is null a new entry will be returned 
}

また、ビュー ディレクトリが乱雑にならないように、ビューをサブ フォルダーに構造化することも重要です。

于 2010-03-14T22:28:57.077 に答える