最近のプロジェクトは symfony フレームワークを使用しています。このフレームワークは ORM を使用してデータベースを操作します。正直に言うと、エンティティの名前付けと既存のデータベース フィールドに関する限り、ORM を使用することの開発効率と運用効率は必ずしも高くありません。 ORM エンティティ属性の名前付けはキャメル ケースで行われ、データベース フィールドはアンダースコアで区切られ、フィールド マッピング プロセスが作成されます。エンティティに必要な配列を手動で記述する必要がある場合、フィールド マッピングは頭痛の種です。特にフィールドが多数ある場合は、吐き気を催すほどです。この時点で、アンダースコアで区切られた名前付きフィールドをキャメルケースの名前に変換するという問題が発生します。私も非常に怠け者なので、長時間オンラインで検索しても、特定の PHP デモが見つかりませんでした。それらの一部は Java で書かれており、非常に複雑です。そこで、私は十分な食料と衣服を用意して、そのうちの 2 つを書きました。早速コードを投稿しました。 2 つの異なる処理方法があり、どちらがより効率的であるかを確認したいと思います。
テストの結果、文字列スプライシング方法は配列処理を使用するよりも 0.1 秒遅いことがわかりました。もちろん、これは各関数を 100,000 回実行した後にのみ確認できる結果であり、もちろん、その差は 10,000 回実行することもできます。 1 回後は無視できます。以下はテスト結果です:
1K 回実行:convertUnderline1: 実行時間 = 0.0050010681152344
convertUnderline2: 実行時間 = 0.0039999485015869
1w 回実行:
convertUnderline1: 実行時間 = 0。 05500602722 168
convertUnderline2: 実行時間 = 0.036003828048706
10w 回実行されました :
convertUnderline1: 実行時間 = 0.46304702758789
convertUnderline2: 実行時間 = 0.31903195381165
文字列のインターセプトとスプライシングが配列の連結より遅いのはなぜですか? PHP C の最下層を見たことがあれば理解できるでしょう。したがって、将来的には、1 つの文字列に連結する必要がある文字列が多数ある場合は、ドット連結を使用せずに、それらを配列に配置し、内分解連結を使用してください。
もう一つ言うべきことは、このメソッドは JS でも使用されており、文字列接続ブロックよりも配列接続の方が優れているということです。
以上、PHPを使ってアンダースコアで区切られた名前付き文字列をキャメルケースの命名方法に変換し、アンダースコア以降の最初の文字を大文字に変更する方法を、関連内容も含めて紹介しましたので、PHPに興味のある友人の参考になれば幸いです。チュートリアル。