4

ドキュメントの使用に問題があります。関数のソースを見たいとしましょう

DB::トランザクション();

http://laravel.com/api/index.htmlにアクセスします

検索フォームに「トランザクション」と入力します

何も見つかりません。

次に、左側の Namespaces/Database に移動しようとしますが、これは理にかなっています。

そして後でどこに行けばいいのかわからない。いくつかの名前空間、いくつかのクラス、いくつかのインターフェースがあります。後で、これが接続クラスにあることがわかりましたが、最初は見ませんでした。接続は、トランザクションを行うのではなく、データベースへの接続に関連付けられます。

また、物事をすばやく見つける方法がわからない場合もよくあります。

どのように対処しますか?

ドキュメンテーションは開発者の親友の 1 つであると思いますが、すべてのファイルで崇高な大規模検索を使用してこの機能を見つけたと思います。

ところで-私はCodeigniterのドキュメントを下げたので、私もがっかりしています。codeigniter では、すべてがとてもシンプルに見え、検索は非常にうまく機能しました。同じ単語「トランザクション」を入力するのは魅力のようです。

わかりました、CIが検索するのと同じ方法を試しました:

取引サイト: http: //laravel.com/api/

すると見つかります。他に方法がない場合は、検索リンクをブックマークして、キーワードなどを変更する必要があります。

4

2 に答える 2

3

これが、CTAGS の使用を強くお勧めする理由です。CTAGS プラグインでサブライム テキスト 2 を使用しています。クラス メソッドで CTRL+SHIFT+Click を押すだけで、そのメソッドを持つクラスのリストが表示されます。1 つしか存在しない場合は、ファイルとメソッドに直接移動します。速度の点では、API/ドキュメントの検索に勝っています。Laravel Facades 用の Sublime text 2 プラグインもあります!

https://github.com/stidges/Laravel-Facades-for-ST

于 2013-11-15T17:09:25.197 に答える
3

CodeIgniter は間違いなく単純で、大規模なプロジェクトは (強制的に) ひどく間違ったコードの重みで大きく苦しんでいました。Laravel はその基準を少し引き上げますが、それは開発者としての利益になります (約束します :D )。

まず、コードを検索するための称賛。多くの人はそうしません。そこを見ることで多くのことを学びます。

Laravelコード

Laravel の場合、名前空間と、名前空間がファイルのオートロードにどのように関係しているかを知ることで最善を尽くすことができます (名前空間は基本的にディレクトリに関係します)。これはご存知かもしれませんが、クラスとそのメソッドを見つける方法に関連しています。

さて、これは何かがどこにあるかを知ることにはなりません。それには、自分でコードを掘り下げる必要があります。ほとんどの場合、コードを確認するために Github を開いてlaravel/frameworkレポジトリを開いています。

注: この API 検索は、(残念ながら) ファイル内のメソッドではなく、ファイルを探します。

ギットハブ

前述のとおり、コードの検索には API ドキュメントではなく Github を容赦なく使用しています。Github での検索は非常に優れています。現在のリポジトリ内を検索します。

たとえば、github で「関数トランザクション」を検索したところ、良い結果が得られました。

ここで、クロージャーを受け入れ、トランザクションの周りのクロージャー内で実行されるコードを囲むことがわかりました。そのクロージャー内で例外をスローすると、キャッチされてトランザクションがキャンセルされることがわかります (そして、それを制御する方法が得られます)。

ファサード

@matit が指摘したように、Facades は実際にはコードの場所を隠します。それはトリッキーな部分です。一般に、任意のファサードでメソッドを呼び出して、getFacadeRoot()それがどのクラスであるかを把握できます。

// Figure out what underlying class the Auth facade actually is
echo get_class( Auth::getFacadeRoot() );

最終的に、コード内のパターンを発見します。ほとんどのファサードは、各パッケージ内の特定のタイプのクラスを指しています (たとえば、どの基本実装を使用するかを決定するのが仕事の Manager クラス)。

Laravel の一般的なアーキテクチャに関するTaylor の本を読むことを強くお勧めします。すぐに読める価値の高い本です。

CodeIgniter はシンプルさで優れていましたが、Laravel はコーディングの概念をより適切に教えることで優れています。しばらくお待ちください :D (または、CodeIgniter を引き続き使用してください。これもクールです。作業を完了させるものは何でも!)

于 2013-11-15T14:57:20.513 に答える