ホームページ >バックエンド開発 >PHPチュートリアル >Phalcon フレームワーク使用ガイド、Phalcon 使用ガイド_PHP チュートリアル

Phalcon フレームワーク使用ガイド、Phalcon 使用ガイド_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:58:471053ブラウズ

Phalconフレームワーク使い方ガイド、Phalcon使い方ガイド

私が初めてPHPを勉強していた時にPhalconを知り、最近やっと使う機会があったので、感じたことをいくつかシェアしたいと思います。使用にあたって

個人的には、依存性注入を使用してコードを非常に柔軟に構成する方法がとても気に入っています。ただし、フレームワーク内に多くの要素があり、いくつかの落とし穴に遭遇します。 github を 1 年以上使用していましたが、まだ解決されていません。ただし、ある程度の開発経験があれば、これらの落とし穴によって多くの時間が無駄にされました。

1つ目はビューです

リーリー

MainView (メイン レイアウト ファイル パス + ファイル名、ただし拡張子は含まれません。拡張子はビュー エンジンに挿入する際のキー値です)、

LayoutsDir (レイアウト ディレクトリ パス)、

Layout (メイン レイアウト ファイル名、Layouts ディレクトリ内のファイルは必要に応じて mainView として動的に使用できます)、

PartialsDir (partial関数を使用する場合、partial('main/header')などのテンプレートファイルを検索します。検索パスは「/yourpartialsDir/main/header.volt」です。),

ViewsDir (コントローラー/アクションに対応するテンプレートファイルが配置されているディレクトリを設定します。partialDirと同様に、ディレクトリ内のテンプレートファイルを自動的に検索します)

BasePath (ビューディレクトリのベースディレクトリ、palcon、およびすべての設定に基づくディレクトリを組み合わせてパスを結合し、テンプレートファイルを見つけます。これが落とし穴です)

最初にこのビューを使い始めたときは、絶対パスを使用したのは、絶対パスの方が構成と管理に便利だからです。

そして騙されて、午後のデバッグを無駄にしてしまいました。
公式ドキュメントに記載されている例に基づいてテストを繰り返した結果、このビュー コンポーネントはパスの設定に相対パスのみを使用でき、BasePath を設定する必要がないことがわかりました。

怒りに駆られて halcon のソースコードを読みに行きました 開発言語は falcon チームが開発した言語、Zephir です。


言語の構文は比較的シンプルで理解しやすいです。そして、この文を目にしました。


..]

相対パスか絶対パスかの判断が無く、直接結合しているだけのようです これが問題の原因だと推測されます。

そして、アクション、レイアウト、メインレイアウトテンプレートファイルを順番に直接解析します。

それで、それを検証したかったので、いくつかのデバッグファイルを作成し、それらをデバッグする計画を立てました。

Phalconのソースコードをチェックする過程で1,000単語省略しました...確実に呼び出されパス処理があり、View関連のクラスをいくつか継承するメインメソッドをいくつか発見しました

リーリー
私がテストしたコードはマルチモジュールアプローチを使用しています。

BaseViewファイル、palconのビューを継承し、このメソッドのエラーメッセージを開きます

BaseVolt ファイル、テンプレート エンジン volt を継承します

ビューインジェクションのコードとディレクトリ構造は図の通りです


ログ記録は以下の通りです

ページの出力は次のとおりです:

予想通り、絶対パスを使用すると、halcon は何があっても上記で設定したパスを直接接続します。

開発者がコントローラー/アクションビューを動的に使用したいが、レイアウトのメインディレクトリが上位ディレクトリにある場合、問題が発生します。


halcon が見つけたメインのレイアウト パスは


そして私が欲しいのは

PhalconMvcViewException: View '/Users/Hin/work/phalcon_mode/app/modules/admin/views/layouts/main' was not found in the views directory

その後、パスが見つからず、メインのレイアウトテンプレートファイルが機能しません...

リーリー /Users/Hin/work/phalcon_mode/app/views/layouts/main halcon ビューのソース コードにある 3 つの変数のうち、basePath と viewDir (重要なのは、作成者が viewDir 変数を誤解しており、それがバグの原因でした) が、_enginrender が有効な場合のアクション ビューとレイアウト ビューの基本パスとみなされます。順番に実行されるメインビューのパス。
これを理解したら、ゆっくりと自分で道を設定できます...

リーリー

----------------------ゴージャスな分割線--------------- --- ------------------

2番目はモデル

もう 1 つの落とし穴があります。ファルコン モデルについてです。私も問題を投稿しましたが、作者は気にしませんでした。

ドキュメントによれば、モデルはセッターリンク記述メソッドを提供しますが、実際にはセッターは機能しません...

リーリー

リーリー
しかし、このフレームワークを使用して開発されたプロジェクトは中止され、事故がなければ、より深い穴に遭遇することはありません。 最近機嫌が悪いので記録として残しておきます。

最後に、github のソース コードを直接添付します。マルチモジュール モードの開発にこのようなディレクトリ構造を使用するのも良いでしょう。他の人の参考になれば幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1102460.html技術記事 Phalcon Framework の使い方ガイド、Phalcon の使い方ガイド 私が php を勉強していたときに初めて halcon を知り、最近ようやく使う機会があったので、使ってみた感想をいくつかシェアしたいと思います。個人的にはphが好きです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。