ホームページ > バックエンド開発 > PHPチュートリアル > Symfony2 の長所と短所は何ですか?

Symfony2 の長所と短所は何ですか?

WBOY
リリース: 2016-06-17 08:32:14
オリジナル
1594 人が閲覧しました

コミュニケーションへようこそ。

返信内容:

主にコードの抽象化レベルを向上させるためです。基礎となる概念を直接公開する単純な PHP 言語と比較して、Symfony は特定のエンジニアリング上の問題を解決するための一連の概念とツールを提供し、大多数のプログラマーが反復作業を減らすのに役立ちます。抽象化とは、複雑な概念やプロセスなどをより簡潔な言葉で表現できることを意味します。
symfony は 1 年以上書かれていますが、私にとっての利点は、「コードを簡略化するさまざまな方法がある」、「簡潔なコードの多くの利点」、「簡潔さとは何か?」を理解できることです。何か"。

Symfony の概要:
  • ルーティング: ホスト名を制限できるため、多数のパブリック機能を持つ Web サイトがコードのセットを共有できます。識別サポート Reg Detection により、URL を必要に応じて定義できるようになり、モジュール化を容易にするためのプレフィックスとインポートがサポートされます。
  • Twig テンプレート: これは私のお気に入りのコンポーネントの 1 つです。 PHP とは異なる構文のセットを提供しますが、複雑な Web サイト構造やページ構造の処理に非常に適しています。拡張機能は非常に便利で強力です。たとえば、ページの特定のモジュールを Redis にキャッシュする必要がある場合、ViewExtension を作成し、テンプレート内のメソッドを使用して特定のモジュールをキャッシュできます。 . コードの管理も簡単です。
  • Composer パッケージ管理: コードの依存関係を明確にします。そして今では、抽象 Redis 用の snc/redis-bundle、画像処理用の liip/imagine-bundle、サードパーティ ログイン用の hwi/oauth-bundle など、優れたサードパーティ バンドルが多数あります。自分のプロジェクトが成熟するにつれて、プロジェクトの Symfony のカスタマイズを分離し、composer を使用して管理することもできます。これは非常に良いと思います。
  • イベント、リスナー、およびサービス: 非常に便利なグローバル関数の処理。厄介なのは、yml 設定ファイルを使用するため、設定が非常に面倒で、正しい構文を見つけるのに非常に手間がかかることです。
  • Doctrine ORM: 利点の 1 つは、データベースの詳細を気にする必要がなく、永続化する必要があるオブジェクトを慎重に設計するだけで済むことです。オブジェクト間の関係を自由に設計できるため、データベース構造の生成からクエリ文の生成までのプロセスを気にする必要がなくなります。もう 1 つの利点は、クエリを実行するときに、文字列に依存してクエリを表現する SQL や DQL の代わりにオブジェクトベースのクエリを使用できることです。SQL は単純な文字列であるため、クエリ ロジック全体の制御をコードで表現するのは非常に面倒です。 。
  • フォームコンポーネント: Symfony はフォームの生成、送信、検証の機能を提供します。このコンポーネントは、入力して保存する必要がある値を維持する formType、フォームの HTML 構造を定義する formTheme、データ検証機能を提供する validation の 3 つの側面を抽象化します。このコンポーネントの欠点も明らかです。自分でフィールドを定義する必要がある場合、その概念は複雑すぎることになります。
  • パフォーマンス: Symfony は、コードの各部分の実行時間、消費されたメモリ、データベース クエリ ステートメント、クエリされた行数、およびインデックスに。このツールを使用してコードを最適化すると、Web サイトを高速に実行できるようになります。

パフォーマンスには問題はありません。最適化の余地はたくさんありますが、パフォーマンスを向上させるには少なくとも定期的にソース コードを読む必要があります。学習コストが高いことも問題です。これは vim を学習するときの感覚と似ていますが、それ以外の場合は非常に良いです。

情報:
    Symfony2 - タグ
  • 過去 2 日間にわたって symfony2 フレームワークを読み、今ようやく laravel の設計思想を理解しました~~~Laravel と symfony はアーキテクチャとコア機能の点で基本的に同じです~~どちらがより強力であるということはありません~~ ~
しかし、laravel には 2 つの違いがあります。1 つ目は美しい言語であり、2 つ目はユーザー中心であり、iPhone と同じように Apple のスタイルに近い傾向があります。ボックスは白くなりがちですが、構造は明確で柔軟性がありますが、非常に複雑で面倒です~~ 利点は、Windows のエンタープライズ バージョンに似て、ホイールを簡単にデバッグできることです。 。

symfony2 は学ぶ価値のあるフレームワークです。laravel をしばらく使っていて、カーネル アーキテクチャをより深く理解する必要がある場合は、laravel の中心的な概念の多くが symfony2 から来ています。

ただし、設計上のアイデアによっては、symfony は laravel よりも自由度が低いと感じます。たとえば、フォームに関して言えば、symfony は非常に完成度が高いと考えられるフォーム システムを開発しており、MVC はすべてパッケージ化されています。 Laravel のフォームは非常に柔軟で、すべて分割され、V の部分さえ後で放棄されました ~~ 普通のプログラマは、Symfony のフォーム システムを初めて見たとき、よく血を吐いて死ぬことがよくあります。

注釈もありますが、これはいつも異端で非公式なものだと感じていますが、まだ慣れていないのか、今はそのメリットを感じていません。 symfony2 を使用して 3 つのプロジェクトを完了しました。そのうちの 1 つは sylius バンドルを使用しました。これまでに codeignitor、yii、zend、drupal、joomla、wordpress を使用してからは、もう戻りたくありません。もちろん、drupal8 は symfony2 のコアバンドルを統合しており、間もなくリリースされるのを待っています。symfony2 を使用した後、コードを書くことの楽しさを再発見しました。これは効率的で、高速で、美しいです。もちろん、データベースは完全に抽象化されているため、phpmyadmin に連絡する必要があります。もちろん、データベースの同期は、特に最適化することはできないパフォーマンスの問題を引き起こします。ただし、symfony2 が提供するキャッシュにより、Web サイトを完全に高速に実行できます。パフォーマンスよりも重要なのは、後で必要なパフォーマンスをゆっくりとデバッグして最適化できることです。

私たちにとってそれほど大きなことではないもう 1 つの欠点もあります。それは、中国の材料が比較的限られているということです。しかし、私たちの議論を通じて、情報はさらに充実していくと信じています。上記のプロジェクトに取り組むにあたり、私は基本的に英語コミュニティからのサポートを受けました。
もう 1 つの問題は、イベント、サービス、セキュリティ、依存関係の注入など、一部の概念が他のフレームワークよりも理解するのが若干難しいことです。もちろん、これは強力な裏で支払う代償でもあります。 利点は強力であることですが、欠点は強力すぎることです。 。 。
1.0のパフォーマンスは良くないことがわかりましたが、2.0のパフォーマンスは大幅に向上しているとのことです。 長所: Java と同様
短所: Java と同様 欠点は、重すぎること、学習曲線が急すぎること、パフォーマンスが高くないこと、中国語の教材が少なすぎること、主にフランス語、次いで英語であることです。さらに、今年の初めであるため、構文は比較的古いです (これが、laravel が優れていると言われる理由です。laravel は今年新しく、多くの新しいテクノロジーを使用しています)。
利点は、既製のコンポーネントが十分にあり、大規模でオープンソースであり、再利用モードがより精巧に設計されており、機能が十分に包括的であることです。
サードパーティのバンドルの問題は、各バンドルの学習コストが低くないことです。オープンソースではありますが、実際には変更するのは比較的困難です。また、歴史的な理由により、多くのバンドルには互換性の問題があります。
私は現在、管理管理プラットフォームを迅速に構築するために主に Sonata シリーズのコンポーネントを使用していますが、この部分はバックエンド開発の効率を最大化できるようになりましたが、開発を高速化する可能性はまだ見つかりません。 。パフォーマンスが必要なインターフェース部分は、別のフレームワークである halcon を使用して処理されます。 利点:
学習すると非常に強力になります。現在、私はすべての Web プロジェクトで sf2 を使用しています。
欠点:
共通の機能に慣れるまでに 3 つまたは 2 つのプロジェクトが必要です。コンポーネント。

sf2 を学習している場合は、公式 Web サイトのベスト プラクティスを読む必要があります。たとえば、フレームワークに付属する実装方法は、まだフロントエンドに grunt を使用するのが好きです。基本的にAsseticBundleは使いません。 私は sf2 を使用したことがありませんが、そのドキュメントを読んだだけです。 springMvc を使用したことがある場合は、簡単に理解できるでしょう。 利点:

設定より規約を前提とした強力なコード生成ツール、フルスタック フリーワーク。
私自身の経験に関する限り、Symfony は非常に効果的です。プロジェクト開発においてその利便性、機敏性、拡張性は、強力なサードパーティのプラグイン ライブラリと活発なコミュニティと相まって、現在 PHP フリームワークの中で最高のものの 1 つです。

欠点:



Symfony の設計を完全に理解するには、少なくとも 1 週間かけてマニュアルとコードを学習してください。
Symfony1.4 と Doctrine1.2 を併用した場合のパフォーマンス。高い同時実行性は問題ですが、Symfony2 と Doctrine2 では大幅に解決されました。しかし、それは別の話です。 =_=



PHP に最適なフレームワークは Symfony です。多くの PHPer は、大規模な Web 開発に必要な基本的な知識が不足しているため、それを使用できません。たとえば、多くの PHPer は、サービス、イベント、DI が何であるかさえ知りません。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート