返信内容:
他の人がフレームワークを開発すると聞くと、多くの人は最初に車輪の再発明を考えるでしょう。実際、ホイールを作るプロセスは知識を急速に蓄積するプロセスであり、自分の欠点をすぐに発見し、発見していない知識ポイントを学ぶことができます。したがって、ある程度の PHP の基礎を持っている人は、全員が完全な基本フレームワークを完成させるよう努めることをお勧めします。
次に、ホイールを構築する以前のプロセスを共有しましょう。
1. 複数のフレームワークを試して、使用方法のドキュメントを読んでみてください。その目的は、その機能を理解して発見することです。 . いくつかのより良い使用設計;
2. ドキュメントを読みながら、この部分の実装原理を並行して考えます。理解できない場合は、メモするか、Github にアクセスしてソース コードを参照してください。コードの構造に慣れていない場合は、見つけるのが難しいかもしれないので、最初に書き留めることをお勧めします)。
3. プロジェクトの構造を見て、この構造の意味を考えてください。エントリ ファイルと静的リソースを他のディレクトリから分離する理由は何ですか。
4. ソース コードの実行プロセス (エントリから出力まで) とエラー処理を試してください。 、テンプレート エンジン、構成、その他の理解すべき点 (基盤が許可する場合は、このプロセスで上記の疑問を解決します);
5. まず、大まかな機能のリストを作成し、必要なポイントを書き留めます。実装する;
6. 次に、コード構造を整理する方法を考えます。実践的な経験があまりない場合は、最も慣れている方法でコードを整理します (最初に実装してから最適化します)。 7. まずは基本的な Hello World を実行してください!;
8. 少しずつ機能を追加していきます。
9. ここで機能を追加するときは、すべてのコンポーネントを実装してみてください。ファイルのアップロードやエラー処理など、自分で実装できるものはすべて実践的な知識を得ることが目的です。
このプロセスは、基礎が少し弱い人にとっては特に難しいかもしれません。そのため、行き詰まった点に遭遇した場合は、まずその点で問題を解決し、すぐに知識を追加してから来てください。戻って続行します。
フレームワークを構築するプロセスで通常使用されるいくつかのポイントをまとめてみましょう (以下は順番ではありません):
1. MVC
2. 自動読み込み: PHP: 自動クラス
;
3. エラー処理: http://
php.net/manual/zh/book.errorfunc.php;4. PHP 標準ライブラリ (SPL)PHP: SPL - マニュアル;
5. 出力バッファー制御: PHP: 出力コントロール ;
6. PHP オプション/情報: PHP:PHP オプション/情報;
7. データベース抽象化レイヤー: PHP: データベース抽象化レイヤー ;
8. セッション拡張: PHP: セッション拡張 ;
9. リフレクション: http://
php.net/manual/zh/book .reflection.php;10. クラスとオブジェクト: PHP: クラス/オブジェクト;
11. 画像処理と GD: PHP: GD - マニュアル;
12. 電子メール関連の SMTP;13. ファイル システム: PHP: ファイルシステム
;
14. 定義済み変数: PHP: 定義済み変数 ;
15. 文字列処理: PHP: 文字列 - 手動;
15. 正規表現: http:/ /
php.net/manual/en/book.pcre.php;上記基本についてはこれで十分かもしれませんが、上記の各リンクには多くのコンテンツが含まれていますが、一般的に使用されるものをマスターしておくと、検索エンジンを使用して理解することができます。
フレームワークにさらに賢い機能や豊富な機能を追加したい場合は、以下の知識ポイントを参照してください。
1. 一般的な設計パターン: ファクトリ、シングルトン、外観、オブザーバーなど。
2. イテレータなどの事前定義されたインターフェイス: PHP: 事前定義されたインターフェイス
;
3. データベースの拡張: PHP: データベースの拡張;
4. PHP のサポート: 国際化と文字エンコーディングのサポート ;
5. よく使用されるキャッシュ、Redis、Memcache、Apc など;6. ActiveMQ、Beanstalkd などのキュー サービス。 🎜>7. Mongo などのマルチデータベースのサポート;8. イベントとフック;
フレームワークを作成する方法もありますが、ここでは「作成」は適切ではありません。結合フレームワーク。これは、Composer
を使用して、オープン ソース コンポーネントに基づいた独自のフレームワークを組み立てることを意味します。もちろん、初心者がこれを行うことはお勧めできません。多くの基本的なことを運動できなくなる可能性があるためです。個人の技術的能力が比較的成熟していて、プロジェクトを迅速に開発することが目的の場合、これを使用することは間違いなく強力なツールです。
最後に、いくつかの参考フレームワークをお勧めします。
1. Slim Framework - フレームワークの基本機能をすべて満たしており、学習に非常に適したマイクロ フレームワークです。 ;
2 . Silex - Symfony2 コンポーネントに基づくマイクロフレームワーク;
- 明確な構造を持つ PHP フレームワーク。さらに、参考用のチュートリアルがいくつかありますが、最初は自分で試してみることをお勧めします。
1. 独自の PHP MVC フレームワークを作成する (パート 1)
2. PHP を使用して独自の MVC フレームワークを構築する
---2015.02.28 補足---下の階の皆さんからの回答を読んだ後、皆さんが本題から外れていることがわかりました。質問は、「
フレームワークを完成させる方法
」ではなく、「
どのような種類の知識の蓄えが必要ですか?」です。フレームワークを完成させるには N 通りの方法があり、いくつかの回答によると、以下、完成しても何も分かりませんが、なぜフレームワークとして実行できるのか途中で原理が理解できないので、誤解を招かないように慎重に答えてください。 実はとても単純なことなのです。 まず次の知識を習得してください: 1. URL を介したパラメータ処理の受け渡し 2. include の意味を理解する
3. 関数のエコーと定義ができるようになります。
OK、始めましょう
まず、php ファイルindex.php を作成して、さまざまな GET パラメータを通じてさまざまな関数を実行できるようにします。
作曲家を学ぶには、このシリーズをご覧ください。
Composer を使用して、独自の PHP フレームワークを段階的に構築します
<?php
function run_it()
{
$function_name=$_GET['fn'];
$function_name();//通过fn参数来运行函数
}
run_it();
phphub.org/topics/159 実際、前の人たちはすでにそれを明確にしています。私は以前にあなたのアイデアを経験しました。簡単に言うと、有名な製品を使用する場合、彼らは通常実装に忙しく、マクロの認識が欠けています。したがって、フレームワークを開発するのが通常です。 私も当時は、上で述べたことほど深く考えずに開発しました。 それは単純なルーティング分散と mvc 階層化でした。基本的な棚を設置したら、徐々に改善していきます。 職場で、自分だけで完了するだけで済む 1 回限りの小さなプロジェクトに遭遇した場合は、独自のフレームワークを試してみることができます。 いくつかのシンプルなフレームワークを探すことをお勧めします。個人的には、最も明確な構造を持つ codergniter をお勧めします。
以前ヘルプを見たところ、学者が Laravel 5.0 を使用して小さなアプリケーションを開発していることを知りましたが、まだ自信がなく、このフレームワークに対する知識と理解が不足していました。しかし、このフレームワークの人気の高さを見て、
質問:
私は PHP が好きで、PHP と laravel をマスターしたいと考えています。この場合、基礎から学習して自分でフレームワークを作成する必要があります。 ? フレームワークを書いたことがない場合、各フレームワークの内容について議論するのは無意味です
最後に、フレームワークを書きました。 個人的には、フレームワークを自分で書くことは非常に重要だと感じています。独自の論理的思考、開発アーキテクチャ、そしてこの言語は質的に改善されました。書く過程では、ci tp yii の 3 つのフレームワークのソース コードを参照しながら 2 つのバージョンを作成しました (アイデアだけを見て、ラフを破棄し、エッセンスを選択しました)。ブログの記事 20 件
メイン トピック:
知識が必要
1 ルート分析
2 ルート配布
3 IoC
4 データベースのカプセル化
5 キャッシュのカプセル化
6 テンプレート解析ファイルキャッシュ
7 安全な xss SQL インジェクション
8 http 操作
9 画像操作
10 など多数
すべての部分で多くの知識ポイントが拡張されます
最後に: 自分で書いたフレームワーク
fantiq/phpframework · GitHub
今これをやっているのですが、ちょっと不器用です。興味のある方はお互い勉強しましょう(*^_^*) 動揺 クラス ライブラリとプラグインは単なるクラウドであり、合理的なアーキテクチャ仕様が最も重要です。
象を踊らせるには、強力でありながらできるだけ軽くし、大量のクラスや設定ファイルを参照しないでください。 多くのフレームワークはクラス ライブラリとしか言えません

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
