web-dev-qa-db-ja.com

フレームワークからフレームワークなしへ

私はPHP=で趣味として約8年間開発を続けてきました。2009年にcodeigniterを採用し、それ以来、単一のプロジェクトを開発することができませんでした。

純粋なPHPで作業していた場合、私が知っていた場合や、スニペットをすばやく見つけることができた場合に、希望どおりに動作するように変更する方法を考え出そうとすると、速度が遅くなることがわかりました。

私はCodeIgniter、Kohana、Symfonyを試しました。私は使いやすさが好きです(そして、doctrineをデータベース作業を大幅に高速化するORMとして使用し始めました)が、プロジェクトでは3〜4倍の時間がかかります。純粋なPHPでかかった時間以前に純粋なPHPで解決した問題の解決策が見つからないとき、私は退屈してイライラします。

フレームワークの使用からフレームワークなしのアプローチに戻った人はいますか?基本的なセキュリティフレームワークのようなものはありますか(XSSの防止、投稿されたデータのフィルタリング、データベースで使用するクリーニング機能の提供)?そのようなことは、フルスケールのフレームワークよりもはるかにメリットがあると思います。フレームワークでの作業を学ぶことで多くのことを学んだと思いますが、自分のコードで作業するほうが幸せです。

89
Alex C

PHP5の現在のバージョンには、標準ライブラリの一部として探しているセキュリティフレームワークの多くが含まれています。

入力としてHTMLを受け入れる場合は、 HTML Purifier を取得して、filter_input_array設定の FILTER_CALLBACK 行から呼び出すことをお勧めします。入力セキュリティに対するホワイトリストベースのアプローチは、XSSに対する優れた(そして非常に強力な)防御の第一線になります。

私の知る限り、PHPには クロスサイトリクエストフォージェリ から保護するメカニズムがありませんが、Googleがそれを支援できると確信しています。 OWASP Security Cheatsheets 独自の保護を実装する場合は、そのセクションを含めます。

好奇心から、スタンドアロンコンポーネントも検討することにしました。これまでに見つけたものは次のとおりです。

テンプレート:

  • PHPテンプレートの継承 (通常のPHPおよびテンプレートの継承)
  • [〜#〜] twig [〜#〜] (Django/Jinja2/ Liquid -自動エスケープとサンドボックスを含むスタイルの構文。キャッシュされたPHPにコンパイル速度。)
  • DwooSmarty の後継であり、より機能が豊富でPHP5に似ています。既存のSmartyテンプレートの互換性システムが含まれています。)

私がまだ適切に調べていないもの:

100
ssokolow

私はフレームワークを信じていません...私はそれらの多くで働いてきました。

MVCフレームワークを嫌う理由:

1)コードの肥大化、私は開発を支援するプレミアムクラスを購入します。フォームクラスやSQLクラスなど。

2)MVCフレームワークは、特に依存関係マネージャーを使用する場合、簡単に移植できないと思います。

3)実際にMVCフレームワークでより多くのコードを記述して、認証などを処理する便利なクラスを大量に含む定型文を使用する必要がある場合は、.

4)ほとんどのフレームワークは、1つまたは2つのデータベースのみをネイティブで提供します。

私は認証とテキストエディターとmadoo +メールクラスのようなsqlフレームワークを備えたフォームフレームワークを見つけることをお勧めします...

アプリケーションの90%は常にフォーム、SQL、およびAjaxクラスです-残りは必要なときに取得できます

私はミニマリストであり、自分のアプリケーションに何も実行しないコードがあるという考えに苦労しています...必要な場合に備えて、それが私にとってうまくいきません。

10
Jugger

PHPを趣味として使用しているというあなたの声明、および「ゆっくりとそこに到達する」というあなたのプロフィール声明に基づいて、これは学習曲線の問題のように思われます。 a)フレームワークが課す構造内での作業方法を理解し、b)フレームワークが可能にする効率から利益を得ることができない、豊富な経験を持つ。

それに固執することをお勧めします。ビデオチュートリアルで最初に戻ります。あなたがそれを理解するまで、他の人々のコードを見つけて読んでください。プロジェクトを最初から構築します-簡単に始めて、機能を追加します。フォーラムをフォローして、返信を読む前に自分で質問に答えようとします。

私はさまざまなプラットフォームで約20年間プロのプログラミングをしてきましたが、それでもCIに慣れるにはしばらく時間がかかりました。しかし今は、定量化可能なパフォーマンスの問題(Twitterを考える)を露呈するほど十分な規模のサイトがない限り、純粋なPHP(自分のプロジェクトの場合))に戻ることはありません。

8
coolgeek

多くの経験があるため、お気に入りのライブラリを独自に用意し、それらを手で選択して、独自のシンプルなフレームワークを作成する必要があります。フレームワークまたはフレームワークなし(およびどのフレームワークか)は、手元のプロジェクトの種類に依存し、すべてに対応できるグローブはありません。ですから、既存のフレームワークが遅くなっていると感じたら、しばらく時間をかけて、ニーズに応じて機能するフレームワークを考え出すことを強くお勧めします。

7
Sabeen Malik

Zend Frameworkはそのために本当に優れています。必要なだけ使用できます。そのすべてがphpでコード化され、オープンソース化されているため、ハックして独自のものにすることができます。異なるコンポーネントは、他のフレームワークほど相互に依存していません。

Zendのコンポーネントを使用して、問題なく簡単なフレームワークを構築できます。

チェック 出ました!

2
Iznogood

私はあなたの気持ちを正確に知っています。私は4〜5年前にPHP(Delphiから来た、笑)で始め、純粋なphpで始めました。私が持っていたのは、すべてのテーブルフィールドを読み取ってフォームを作成する「CMSパネルのような」ものでした。しばらくしてPHPフレームワークの知識に何らかの形で到達した後、私は最初にCakePHPを試しましたが、気に入らなかった後、Yiiに入りました。使用します(Giiジェネレーターを使用すると、非常に効果的です)。 Symfony、ZF2、Laravel、Yii2-Beta、およびRADのいくつかのフレームワークを試してみましたが、それでもフレームワークの前のように十分に速く感じていませんでした。

私は自分のフレームワークを開発したことに気づきました(当然のことながら、いつか目が覚めて「新しいフレームワークを作成する」と言ったわけではありませんでした)。私はそれが悪い悪い悪い慣行であり、「ホイールの再発明」の動きであることを知っていますが、今ではプロジェクトをはるかに速く(PHPのみよりも)開発しています。

コードは完全なMESSなので、約1か月前にフレームワークの再構築を開始しましたが、今ではcomposerを使用し、phpフレームワーク間に存在する一般的なルールに従っているMVCです。

なぜ私は改革しているのですか?誰かが私のプロジェクトを修復する必要がある場合、それは別の世界のものではないからです。

だから私はあなたを理解しています。

私のアドバイスは、ツールを準備し(フレームワーク、プリセットアプリなど、ユーザーが名前を付けるもの)、気分に合わせて使用​​しながら、いくつかの一般的なルール(MVCと同様に、「モジュール化が簡単」なこと)に従ってください壊れた場合は交換できます。

2
Ricardo Fiorani

基本的なセキュリティのために、私は スーパーグローバルをラップする のカスタムフィルターメソッドを使用します。その構文は慣れる必要がありますが、PHP filter_var()APIよりも簡単であり、サニタイズを怠ることはできません:

 $_GET->text("inputvar") or $_POST->name["field"]

インライン$ _REQUEST-> sql()のエスケープも許可されていました。ただし、データベース作業では、パラメーター化されたSQL、または選択したDAL/ORMを使用し続けます。

1
mario

何があなたを困らせているのかはわかりませんが、codeigniterは素晴らしいフレームワークです。素晴らしいドキュメントがあり、多くの人がcodeigniterを使用しているので、ドキュメント、フォーラム、またはstackoverflowですべてのヘルプを見つけることができます。 Codeigniter、CakePHP、Zend、Spring 3.0、Ruby on Rails)、しかし私はcodeigniterが最高のドキュメントを持っていると言わざるを得ません。codeigiterには自動的に処理されるものがたくさんあります。セキュリティについて心配する必要があります。コアに取り組むPHPは、ホイールを再発明するようなものです。まあ、最も重要なことは、慣れればコアからフレームワークに移行するには多くの努力が必要になるということですまた、あなたはそれを愛するようになります。また、Ruby on Railsは、そのインとアウトを知っていれば、2倍の速度を持つことができる優れたフレームワークでもあります。

1
Sachin Prasad

私は ToroPHP の1日の調査を行いましたが、それは非常に素晴らしいものでした。 RESTfulアプリケーションを対象とするシンプルなフレームワークです。これにより、フレームワークの肥大化に対処する必要なく、サーバー側のコードをモジュール式に保つことができます。

1
Kinjal Dixit