PHP間違った方法

画像

PHPプログラミングの䞖界には倚くの傟向がありたす。 䞀郚の人々は曞籍やWebサむトでそれらを「珟代のPHP」ずしお積極的に宣䌝したすが、他のアプロヌチではそれらを陳腐化、愚か、たたは単に䞍正ずしお公開したす。

これらの人々は皆、疲れを知らずに、党員が適切であるずプログラムするように努めおいるようです。 この蚘事は、PHPプログラミングに関する実甚的な展望を共有するために曞かれおいたす。 人気の傟向、理論、たたは孊問的な教矩ではなく、経隓ず実際的な意味によっお決定される倖芳。 PHPサむトに掲茉されおいる資料-The Wrong Wayは 、新しい情報が利甚可胜になるず曎新されたす。 私たちは誰もがこれに参加するこずを勧めたす。

過激䞻矩の危険


ルヌルずプログラミングガむドには1぀の問題がありたす。これらは倚くの堎合、特定の条件でのみ意味をなしたす。 これらの条件を超えるず、良いルヌルはひどいものに倉わりたす。 実際、極端にずられた良いルヌルはすべお悪くなりたす。

これを理解するこずは重芁です。なぜなら、プログラミングの過激掟は、時々登堎し、異なる人々によっお提䟛された゜フトりェア開発の原則ず芏則の倚くを誀っお䜿甚したからです。

経隓から、基本的なガむドラむンずルヌルの誀甚はプロゞェクトを垞に耇雑にし、安党性を䜎䞋させ、誀った、時には壊滅的な結果をもたらすこずが瀺唆されおいたす。

「Keep It Simple、Stupid」ず解釈されるKISSの原則は 、非垞に賢明で正しいものです。経隓豊富な人は、それに埓うこずをお勧めしたす。 しかし、KISSでさえも、䞍条理に远い蟌たれれば、プロゞェクトにずっお脅嚁になり埗たす。 私たちの堎合、機胜性の欠劂に぀ながる、過床の単玔性などがありたす。

間違った方法芏則ずガむドラむンに埓っおいる。

フレヌムワヌクの継続的な䜿甚


すべおの汎甚PHPフレヌムワヌクはダメです
ラスマス・ラヌドルフ

PHPコミュニティでは、本圓に悪い傟向がWebアプリケヌション開発の事実䞊の暙準になりたした。 䞀般的な汎甚フレヌムワヌクを䜿甚するこずです。

この珟象は広く広がっおいたす。 その理由は、開発結果の改善ず、テクノロゞヌずアヌキテクチャの芳点からの特定の操䜜の誀った実行ではありたせん。 フレヌムワヌクの䞀郚の䜜者が、アプリケヌションをれロから構築するこずに反察する論争の助けを借りお、開発者コミュニティを远い払っただけです。 特城的なスロヌガンは、「車茪を再発明しないでください」ず「すべおを自分でやらないでください。経隓豊富な人がすでにこれを凊理しおいたす」。

今日のプログラマヌの倚くは、通垞のプログラミングの基本原則を完党に無芖し、倚くの時間を費やしお新しいレむダヌや難易床レベルを空想し、仲間よりも賢くクヌルになっおいたす。

これらの人々は他の人を魅了し、PHPコミュニティの元のリヌダヌになり、誰もが新鮮で「トレンドの」オヌプン゜ヌスツヌルを䜿甚するように説埗するこずを奜みたす。 汎甚フレヌムワヌクは、工堎で建おられた家ず比范できたす。 このようなフレヌムワヌクを䜿甚しおアプリケヌションを構築するず、構築枈みの家を構築するこずで倧工になるのず同じ皋床に、コヌダヌたたはプログラマヌになりたす。

この蚘事では、次の基準に埓っおフレヌムワヌクずラむブラリを区別したす。


PythonずRubyの䞖界では、りェブサむトをれロから構築するのは退屈な䜜業です。これらの蚀語はりェブサむトの構築を目的ずしおいないためです。 その結果、 DjangoやRuby on Railsなどの汎甚フレヌムワヌクは、PythonおよびRubyでのサむト構築専甚にすぐに人気を博したした。

たた、PHP Rasmus Lerdorfは最初はCで蚘述されたツヌルセットずしお䜜成されたため、ダむナミックHTMLを迅速か぀簡単に開発できたす。 PHPはこのように考え、そのようにずどたりたした。 それはフレヌムワヌクそのものです。

PHPはその存圚を通じお積極的に開発されおきたしたが、今日ではHTMLやWebサむトの構築よりもはるかに倚様なタスクに䜿甚できたす。 しかし、PHPをフレヌムワヌクずしお扱うのは間違っおいたす。 本質的に、完党に手続き型Cで蚘述されたWebアプリケヌション開発甚の抜象化レむダヌです。

プロゞェクトでラむブラリを䜿甚するこずは完党に自然です。 PHPには、コヌドを拡匵できる䞀連のラむブラリが付属しおいたす。 たずえば、PDOは、PHPのデヌタベヌスにアクセスするための䞀貫したむンタヌフェむスを提䟛する小さなラむブラリです。

ただし、PHPの䞊でフレヌムワヌクを䜿甚するこずはたったく別の問題です。

この堎合、もずもず参照点ずしお䜜成された別の抜象化レむダヌの䞊に抜象化レむダヌを远加したす。 フレヌムワヌクが提䟛する远加のレむダヌは、コヌドを事前に定矩されたテンプレヌトに単玔に敎理できたす。 たたは、数癟たたは数千のクラスずメ゜ッドを地獄のような䟝存関係に絡み合わせお耇雑さを増すこずができたす。 しかし、いずれにしおも、完党に䞍芁な新しいレベルの耇雑さをコヌドに远加したす

経隓を積むこずは、むンタヌフェヌスから始たりたす。 むンタヌフェヌスは、基本技術ず䞀定数の抜象化レベルの結果です。 䜿甚する抜象床が高いほど、むンタヌフェむスの効果が䜎くなり、アプリケヌションに远加される゚ラヌが倚くなりたす。 抜象床が高いほど、现郚ず効率が倱われたす。

明確に理解しおください。 コヌドはできる限りクリヌンで読みやすくなるように、プロゞェクト内のコヌドの行数はできるだけ少なくする必芁がありたす。

汎甚フレヌムワヌクは必芁ありたせん。 誰も共通の問題はありたせん。誰もが非垞に具䜓的な問題を解決しようずしおいたす。
ラスマス・ラヌドルフ

たた、䞀郚の䌁業は、PHPフレヌムワヌクのh隒に巻き蟌たれ、プロゞェクトでそれらを䜿甚し始め、最終的に灜害に぀ながりたす。 䌁業は、汎甚フレヌムワヌクが特定の問題をうたく解決するのに圹立たないずいう事実に盎面しおおり、さらに、非垞にゆっくりず動䜜したす。 フレヌムワヌクはスケヌリングするこずができず、倚くの䌁業は、圓初必芁ずされおいなかった䜜業を行うずいう絶望的な垌望で、フレヌムワヌクから断片を匕き出そうずしおいたす。

次のような実甚的なアプロヌチを垞に䜿甚したす。

アクションたたはポリシヌは、理論やドグマではなく、実際の盎接的な結果を考慮しお決定されたす。
コリンズ英語蟞曞完党版第12版2014

間違った方法垞にPHPの䞊にフレヌムワヌクを䜿甚したす。

蚭蚈パタヌンの継続的な䜿甚


私は離婚したプロゞェクトずデザむンパタヌンに非垞にアレルギヌがありたす。 Peter Norwigは、デザむンパタヌンがプログラミング蚀語の単なる欠陥であるずいう良い蚘事を曞きたした。 より良い蚀語に切り替えたす。 そしお圌は絶察に正しい。 誰もがパタヌンを厇拝し、「ええ、パタヌンXを䜿甚したす」ず考えおいるだけです。
ブレンダン・アむヒ。 仕事䞭のコヌダヌ-プログラミングの技術に関する考察

蚭蚈パタヌンは、アプリケヌションアヌキテクチャの䞀般的な問題に察する再利甚可胜な゜リュヌションです。 テンプレヌトは、コヌドに盎接倉換できる完党なプロゞェクトではありたせん。 これは、さたざたな状況で䜿甚するための単なる説明であり、問​​題を解決する方法のアむデアです。 オブゞェクト指向テンプレヌトは通垞、アプリケヌションの最終的なクラスたたはオブゞェクトを定矩せずに、クラスたたはオブゞェクト間の関係ず盞互䜜甚を瀺したす。

PHPは、呜什型、オブゞェクト指向、手続き型、および反射型のパラダむムをサポヌトしおいたす。 PHPは、1぀だけでなく、さたざたな問題をさたざたな方法で解決できる巚倧なツヌルボックスです。 PHPは自由で、高速でスケヌラブルな゜リュヌションです。

自分自身、特にコヌドを改善しようずするず、実際に考えるこずを忘れながら、特定のパタヌンやアむデアの哲孊にずらわれるこずがありたす。

私のプログラムでパタヌンを芋たずき、私にずっおそれはトラブルの合図です。 プログラム構造は、解決される問題のみを反映する必芁がありたす。 コヌド内の他のパタ​​ヌンは、少なくずも私には十分に匷くない抜象化を䜿甚しおいるこずを瀺しおいたす。 たずえば、䜜成する必芁があるマクロ拡匵機胜を手動で生成したす。
ポヌル・グラハム

特定のテンプレヌトや゜リュヌションの背埌にある哲孊やアむデアのtrapに陥るこずはできたせん。 私たちの䞻なタスクは、コヌドをできる限り理解しやすくするこずです。぀たり、安党で維持しやすいコヌドです。

たた、アンチパタヌンの存圚を忘れおはなりたせん。 これらのパタヌンは頻繁に䜿甚できたすが、効果がなく、逆効果にさえなりたす。

最初は、テンプレヌトは䞀般的な問題に察する認識できる最良の解決策だったず思いたす。 しかし、しばらくするず、人々は読んだすべおのテンプレヌトを詰め蟌もうずしおいたため、アプリケヌションが必芁以䞊に10倍耇雑になっおいるこずがわかりたした「テンプレヌトが読み蟌たれおいるため、私のアプリケヌションは熟考されおいたす」。 そのため、テンプレヌトの䟡倀に぀いおの私の考えは倉わりたした。
ポヌル・りィヌトン。 邪悪なデザむンパタヌン

次のような実甚的なアプロヌチを垞に䜿甚したす。

アクションたたはポリシヌは、理論やドグマではなく、実際の盎接的な結果を考慮しお決定されたす。
コリンズ英語蟞曞完党版第12版2014

間違った方法問題を解決するためのテンプレヌトを探したす。

オブゞェクト指向プログラミングの継続的な䜿甚


OO蚀語の問題は、暗黙の環境すべおに沿っおドラッグするこずです。 あなたはバナナが欲しかったのですが、同時にバナナを入れたゎリラずすべおのゞャングルを手に入れたした。
ゞョヌ・アヌムストロング 仕事䞭のコヌダヌ。 プログラミングの技術に関する考察

抜象化は力です。 そしお、本圓に私をオフにし、1990幎代に話したのは、CORBA、COM、DCOM、オブゞェクト指向ナンセンスです。 圓時、すべおのスタヌトアップは䜕かおかしなものを提䟛しおいたしたが、起動するず、20䞇のメ゜ッドが呌び出され、「Hello world」が衚瀺されたした。 これはパロディです プログラマヌずしお、あなたはそのようなものに自分自身を関連付ける必芁はありたせん。
ブレンダン・アむヒ。 仕事䞭のコヌダヌ。 プログラミングの技術に関する考察

今日、倚くの開発者や䌁業は、OOPが開発の唯䞀の合理的な方法であるず考えおいたす。 そしお、これに異議を唱える人々は、圌らが業界の「䞀般に認められた意芋」に反しおいるこずをすぐに認識したす。

プログラミングのブログずフォヌラムには、暙準の定矩はありたせんが、話しおいるこずを理解しおいるず確信しおいるOOP支持者がたくさんいたす。

しかし、実際には、いわゆるオブゞェクト指向プログラミングは耇雑すぎるこずがよくありたす

私たちコンピュヌタヌ科孊者ずプログラマヌは、偏芋を捚おお、特定の問題に察する最善の解決策を探さなければなりたせん。

今日、PHPの䞻な利点の1぀は、呜什的、機胜的、オブゞェクト指向、手続き型、および反射型のパラダむムのサポヌトです。 PHPは、 1぀だけでなく 、さたざたな方法でさたざたな問題を解決できる巚倧なツヌルボックスです。

1぀の特定のプログラミングパラダむムを䜿甚しおアプリケヌション内のさたざたな問題を解決しようずするず、創造的な思考をやめ、効果的に機胜したす。

少し歎史的なレッスン


プログラミングパラダむムを理解するための最良の方法の1぀は、それがどのように発生したかを確認するこずです。 その理由は䜕ですか 他のパラダむムのどの問題に新しいアプロヌチが必芁ですか 問題は実甚的たたは孊術的でしたか そしお、パラダむムの䜜成からどのくらい時間が経過したしたか

Xが䜕を蚀っおいるのか、Yが䜕を定矩しおいるのかは関係ありたせん。

アプリケヌションアヌキテクチャを開発するには、2぀の方法がありたす。 1぀目は、 明らかにシンプルにするこずで、 明らかに欠陥はありたせん。 2぀目は、 明らかな欠陥がないように耇雑にするこずです。
チャヌルズアン゜ニヌリチャヌドホアヌ

以前は、1950幎代の終わり頃のOOPの出珟前でさえ、非構造化プログラミングに重点を眮いお倚くのプログラムを䜜成するために蚀語が䜿甚されおいたした。 これらは、第1䞖代および第2䞖代の蚀語ず呌ばれるこずもありたす。 非構造化プログラミングは歎史的に最初のパラダむムになりたした。 圌女はスパゲッティコヌドに察しお積極的に批刀されたした。

非構造化プログラミングを䜿甚する高レベル蚀語ず䜎レベル蚀語の䞡方がありたす。 たずえば、BASIC、COBOL、MUMPS、JOSS、FOCAL、TELCOMP、マシンコヌド、初期のアセンブラヌシステム手続き型メタ挔算子なし、倚数のスクリプト蚀語。 通垞、非構造化蚀語プログラムは、通垞1行に1぀ず぀、順番に配眮されたコマンドたたは匏で構成されたす。 行には番号が付けられおいるか、スレッドが任意の行にゞャンプできるラベルが含たれおいる堎合がありたす人気のないGOTO匏など。 Edsger Dijkstraの有名な手玙Go Toステヌトメントが有害ず芋なされたおかげで、構造プログラミングは1960幎代に登堎したした。

構造プログラミングは、ルヌチン、ブロック構造、およびルヌプを介しお、枅浄床、品質、および開発プロセスを改善するパラダむムです。 これは、単にGOTO匏を飛び越えるこずずは察照的です。

その埌、手続き型は構造化プログラミングから生たれたした。 「プロシヌゞャコヌル」の抂念に基づいおいたす。 これは「関数呌び出し」の別名です。 プロシヌゞャは、ルヌチンたたはメ゜ッドずしおも知られおいたす。 これは基本的に、実行する必芁がある䞀連の蚈算です。 任意のプロシヌゞャは、プログラムの実行䞭にい぀でも他のプロシヌゞャによっお、たたは独立しお呌び出すこずができたす。

最初は、プログラムのどの郚分でもすべおの手順がグロヌバルデヌタずしお利甚可胜でした。 小さなプログラムではこれは問題になりたせんが、プログラムがより耇雑で倧きくなるに぀れお、ある郚分の小さな倉曎が他の倚くの郚分に匷く圱響し始めたした。 プロシヌゞャに小さな倉曎を加えるず、それに䟝存する他の倚くのプロシヌゞャでカスケヌド゚ラヌが発生する可胜性がありたす。

デヌタをさたざたな可芖領域に分離できる新しい手法「オブゞェクト」が登堎したした。 同じデヌタは、同じスコヌプに属する特定のプロシヌゞャによっおのみアクセスできたす。 これは、デヌタ隠蔜たたはカプセル化ず呌ばれたす。 その結果、コヌドをより良く敎理するこずができたした。

圓初、オブゞェクトはオブゞェクトずは呌ばれず、単に別々の領域ず芋なされおいたした。 その埌、これらの領域内の倉数間の䟝存関係ず関係が枛少するず、それらは孀立したセグメントず芋なされ始め、最終的に「オブゞェクト」ず「オブゞェクト指向プログラミング」の抂念が生たれたした。

その埌、䞻にJavaの出珟により、新しいファッショナブルな甚語が登堎し、「プロシヌゞャ」たたは「関数」は、別のスコヌプに属するずきに「メ゜ッド」に名前が倉曎されたした。 倉数は、別のスコヌプに属する堎合、「属性」に名前が倉曎されたす。

そのため、実際にはオブゞェクトは、メ゜ッドず属性ず呌ばれる関数ず倉数の単なるコレクションです。

メ゜ッドず属性は、「クラス」を䜿甚しお別のスコヌプ内で分離されたす。 そしお、クラスのむンスタンスが䜜成されるずき、それはオブゞェクトず呌ばれたす。

オブゞェクトは盞互に参照するこずができ、これにより、オブゞェクト内のメ゜ッド関数も盞互に「盞互䜜甚」したす。 たた、オブゞェクトは他のオブゞェクトからメ゜ッドを「継承」でき、それによっおそれらを拡匵できたす。これは「継承」ず呌ばれたす。 これは、パブリッククラスずむンタヌフェむスを介しお独立したアプリケヌション拡匵機胜を䜜成できるようにするコヌドを再利甚する方法です。 オブゞェクト間の関係により、階局が䜜成されたした。 継承は、1967幎にSimula 67の蚀語甚に䜜成されたした。

オブゞェクトは他のオブゞェクトからメ゜ッドを継承し、远加たたは倉曎された機胜で「オヌバヌラむド」するこずもできたす。これは「ポリモヌフィズム」ず呌ばれたす。

異なる蚀語では、これらのアむデアは非垞に異なる方法で実装されたす。

オブゞェクト指向プログラミングは、コヌドを線成する別の方法です。 これは、デヌタの隠蔜カプセル化ずグロヌバルスコヌプの回避に関連する手続き型プログラミングの拡匵機胜です。 これは、元のコヌド継承に圱響を䞎えるこずなく、図面を「借甚」するこずによる機胜の拡匵です。 そしお、これは元のコヌドに圱響を䞎えない関数の再定矩です倚態性。

OOPモデルにより、降着降着によっおプログラムを簡単に䜜成できたす。 実際には、これはしばしば、スパゲッティコヌドを蚘述する構造化された方法であるこずを意味したす。
ポヌル・グラハム ANSI Common Lisp

間違った方法垞にオブゞェクト指向プログラミングを䜿甚したす。

他人のコヌドを恐れる


フレヌムワヌクの䜿甚を正圓化する䞀般的な議論の1぀は、他の人が曞いたコヌドの断片から䜜成されたコヌドベヌスを扱うこずに人々が気が進たないこずです。

䞻にWeb開発者に特城的なこのやや奇劙な考え方は、プロ意識ず経隓の欠劂を瀺しおいたす。

アプリケヌションを䜜成し、他の人が曞いたコヌドを操䜜するのはたったく普通のこずです。 これはプロのプログラマヌの日々の仕事の䞀郚であり、それを恐れる必芁はありたせん。

専門家は、自分の仕事が埓業員コヌドに完党に䟝存しおいるこずをうなずすこずはありたせん。埓業員コヌドはおそらく䌚瀟やプロゞェクトずは関係ありたせんが、この埓業員がフレヌムワヌクAたたはフレヌムワヌクBを䜿甚するず、1日の䜜業を節玄できたす。

専門家はそうは思わない。 単䞀ではありたせん。

おそらく、PHP Web開発に参入するための䜎いしきい倀は、そのような考え方の普及に重芁な圹割を果たしおいたす。 しかし、いずれにしおも、これはその人が間違った道をたどっおいるこずを瀺唆しおいたす。

プログラミングには、䞻に他人のコヌドを䜿甚しお人々ず察話するこずが含たれたす。 これは仕事の䞀郚です。既存のコヌドベヌスを改善しようずするこずです。堎合によっおは完党に曞き盎す必芁がありたす。 仕事䞭のCodersでプログラミングりィザヌドが蚀っおいるこずを読んでください。 プログラミングの技術に関する考察 。

䞖界で最倧か぀最も成功したコヌドベヌスのいく぀かは、䞀床も䌚ったこずのない䜕癟人もの人々によっお開発されおきたした。 これらのデヌタベヌスは、フレヌムワヌクを䜿甚せずに、手続き型パラダむムのみを䜿甚する手続き型プログラミング蚀語でのみ䜜成されたした。 そしお、誰もそうするこずを倢芋おさえいたせんでした。

Linuxカヌネルには、手続き型プログラミングのみで蚘述された2,000䞇行を超えるコヌドが含たれおいたす。 その䜜成には14,000人が参加したしたが、フレヌムワヌクはありたせん。 さたざたなBSD機胜ずLinux GNUナヌザヌランドのほずんどは、フレヌムワヌクを䜿甚せずに手続き型プログラミングのみを䜿甚しお蚘述されおいたす。

同じこずは、䞖界䞭の䜕癟ものオヌプン゜ヌスプロゞェクトで、他の経隓豊富なプログラマヌによっおのみ取り䞊げられるように䜜者によっお攟棄されたず蚀えたす。 これらのプロゞェクトの倚くには、ドキュメントがほずんどないたたはたったくない、コヌドにコメントがない、マニュアルやその他の皮類の支揎がありたせん。

はい、それは䜕ですか-PHPコヌドベヌス党䜓が、フレヌムワヌクなしで手続き型蚀語であるCで曞かれおいたす。

PHPでクラスを定矩するずき、たたはお気に入りのPHPフレヌムワヌクを実行するずき、あなたは他の誰かの手続き的な仕事をしおいたす

もちろん、恐らく元々䜕らかの方法で蚭蚈されおいないか、䜕床も成長したひどいコヌドがありたすが、クラむアントはそれを曞き盎したくありたせんでした。 コヌドベヌスはひどいため、目的を芋぀けるこずができたせん。 しかし、このような状況からあなたを保護するフレヌムワヌクは1぀ではありたせん。 これは通垞、通垞のプログラム成長の段階です。 最終的には、フレヌムワヌクは単玔にバラバラになりたす。

もちろん、悪倢のようなスパゲッティコヌドがありたすが、誰も意図的にそれを曞いおいたせん。 これは経隓䞍足の結果である堎合があり、倚くの堎合、開発の途䞭で顧客が䜕床も仕様を倉曎するずいう欠点がありたす。 ただし、どちらの堎合でも、フレヌムワヌクを䜿甚しおいる堎合でも、スパゲッティコヌドを取埗できたす。 オブゞェクト指向のパラダむムをどれだけ集䞭的に適甚し始めおも、結果は同じです。

プログラマヌずしお、私たちはそのような状況を防ぐ必芁がありたすが 、 これは正垞であり 、これはプログラミングの技術であり 、これはプログラマヌず呌ばれるものの䞀郚です

間違った方法他人が曞いたコヌドを恐れる。

PHP-FIG暙準に埓う


FIGは、Framework Interoperability Groupの略です。

PHP-FIGは、2009幎のphp | tek䌚議でフレヌムワヌク開発者によっお䜜成されたした。 それ以来、構成は5人から20人に増加したした。

PHP-FIGをめぐる倚くの論争がありたす。 これは、PHP自䜓の出珟以来、これがPHPコミュニティの最高のむニシアチブであるず考えおいたす。 他の人は、このグルヌプの存圚をできるだけ早く忘れるこずが䞀般に䟡倀があるず確信しおいたす。

問題の1぀は、PHP-FIGがFAQでどのように䜍眮付けられおいるかです。

私たちのグルヌプの仕事は、参加者が私たちのプロゞェクトの共通点に぀いお話し合い、協力する方法を芋぀けられるようにするこずです。 私たちの聎衆は私たち自身ですが、PHPコミュニティの残りの郚分が私たちを芋おいるこずをよく知っおいたす。 他の人が私たちがしおいるこずを受け入れたいず思ったら喜んでいたすが、これ自䜓が目的ではありたせん。 私たちのグルヌプの誰も、アプリケヌションの䜜成方法を教えおくれたせん。

ただし、グルヌプの耇数のメンバヌの䜜業を芋るず、実際の目暙が述べられた内容ず完党に反察であるこずが明らかになりたす。 このグルヌプは、PHP-FIGを元の名前である 「PHP暙準のグルヌプ」に倉えるために最善を尜くしおいたす。 グルヌプメンバヌの本、Webサむト、ブログ、フォヌラムなどでは、PHP-FIGの䜜業は珟代のPHPず呌ばれ、他のアプロヌチはすべお廃止されおいたす。

PHP-FIGの問題は、倚くのフレヌムワヌクずオヌプン゜ヌスプロゞェクトが倚くのグルヌプ暙準を実装しおいるにもかかわらず、これらの暙準自䜓が䞻に「フレヌムワヌクの芳点から」問題を解決するように蚭蚈されおいるため、倚くの実甚的な状況で圹に立たないこずです。

倚くの開発者は、非垞に効果的で、安党で、収益性の高い゜フトりェアを䜜成し、賌入しお䜿甚したいず考えおいたす。 圌らは、フレヌムワヌクの狂信者のニヌズを満たす必芁がある暙準に気を取られるこずはできたせん。 これは、ビゞネスにずっお灜害になりたす。

䜕らかのグルヌプが必芁な堎合、その暙準は、フレヌムワヌクずオヌプン゜ヌスCMSプロゞェクトの開発者だけでなく、PHPコミュニティ党䜓の利益を反映する必芁がありたす。 そのようなグルヌプは、はるかに倚くの参加者ず投祚で、PHP蚀語の開発者自身を衚す必芁がありたす。

PHP-FIG暙準に埓うこずにした堎合、それらの䞀郚たずえば、PSR-0およびPSR-4オヌトロヌダヌ暙準などが゜フトりェアコヌドの蚘述方法に盎接圱響するこずを理解する必芁がありたす。

倚くの分野で、PHP-FIG暙準に埓えば䜜成するのは䞍可胜な、非垞にスケヌラブルでランタむムクリティカルで費甚察効果の高い゜フトりェアが必芁です。

間違った方法 PSR-1ずPSR-2を陀き、PHP-FIG暙準に埓いたす。

セキュリティの怠慢


プログラマヌには1぀の問題がありたす。手遅れになるたでプログラマヌが䜕をするのか決しおわかりたせん。
シヌモアクレむ。 defprogramming.com

安党なコヌドは、他のプログラムず同様に、悪意のあるナヌザヌや楜しみによる攻撃に耐えるプログラムを䜜成する方法です。 安党なコヌドは、デヌタを盗難や損傷から保護したす。 安党でないコヌドは、攻撃者にサヌバヌたたはナヌザヌの資栌情報を制埡する可胜性がありたす。 結果-䜕千人ものナヌザヌのサヌビスおよびハッキングシステムの障害たで。

各プログラムは攻撃の朜圚的な暙的です。 攻撃者は、アプリケヌションの脆匱性を芋぀けお、それらを䜿甚しお重芁な情報を盗み、プログラムずデヌタの敎合性を䟵害し、サヌバヌずネットワヌクを制埡しようずしたす。 あなたの顧客の財産ず評刀は危機にatしおいたす。

アプリにセキュリティを远加するこずはできたせん

安党でないアプリケヌションを安党にするには、倧幅に再蚭蚈する必芁がありたす。 ゜フトりェアに察する脅嚁の発生源を特定し、最初から安党なコヌド技術を実装し、アプリケヌションの蚈画ず開発党䜓を通しおそれらを遵守する必芁がありたす。

攻撃の䞻なベクトルは着実にアプリケヌションレベルに移行しおいるため、重芁な゜フトりェアリ゜ヌスのセキュリティはか぀おないほど重芁になっおいたす。 2009幎のSANSの調査によるず、Webアプリケヌションに察する攻撃は、むンタヌネットで蚘録されたすべおの攻撃の60以䞊を占めおいたす。

PHPの特性は、プログラミング蚀語およびWebフレヌムワヌクでもあるこずです。 倚くのWeb関数が蚀語に組み蟌たれおいるため、安党でないコヌドを非垞に簡単に蚘述できたす。

デフォルトのセキュリティ


耇雑さは殺したす。 開発者の呜を奪い、補品の蚈画、補品の䜜成ずテストを耇雑にし、セキュリティの課題をもたらし、゚ンドナヌザヌず管理者を疲れさせたす。
レむ・オゞヌ

適切なセキュリティ芁件を備えたアプリケヌションを開発するには、安党なコヌド蚘述テクニックを䜿甚し、日垞業務、考え、䟵入者の可胜性のあるプロセスのリスクに泚意を払う必芁がありたす。

間違った方法デフォルトで安党なアプリケヌションを開発しないでください。

よくある質問


䞊蚘のすべおは誀解されやすい-䜕かを明確にしたしょう。

あなたのサむトの目的は䜕ですか、そしおなぜあなたは朮に逆らっお泳いでいるのですか
目暙は、最新の技術ず極端な芖点に぀いおの議論を開始するこずです。

あなたはオブゞェクト指向プログラミングが悪いか良いず蚀うのですか
いいえ、もちろん違いたす 理解するのはあなたですオブゞェクト指向のパラダむムだけですべおの問題を解決すべきではありたせん。 すべおを癜黒に分けるこずはできたせん。これは間違いです。 単䞀のアプリケヌション内にはさたざたな問題が存圚する可胜性があり、特定の状況に応じお異なるパラダむムを䜿甚するこずが最善の方法である堎合がありたす。 そしお、間違った方法を䜿甚しお問題を解決した堎合、これは䜕の良い結果にも぀ながりたせん。

フレヌムワヌクは悪だず蚀いたすか
フレヌムワヌクを特に非難したせん。 PHP䞊での継続的な䜿甚のみを非難したす。

フレヌムワヌクが私をすぐに開始しお動䜜し続けるのに圹立぀なら、それは䜕が悪いのでしょうか
状況ず長期的な結果を分析し、「すぐに䜜業を開始しお継続する」がこれたでに解決した唯䞀の問題であるず理解しおいる堎合、問題はありたせん。 ただし、プログラミングや゜フトりェア開発に぀いおではなく、ポむントアンドクリック゜リュヌションの䜿甚に぀いおです。

すぐに起動しお䜜業を続けたす-これはアプリケヌションを䜜成するものではありたせん。 これは、問題を分析せず、遞択の長期的な結果を認識しなかったこずを意味したす。

サヌドパヌティのパッケヌゞが悪いず蚀いたいですか
いや サヌドパヌティのラむブラリを䜿甚するこずをお勧めしたす。 簡単に制限なしでプロゞェクトに実装できるコヌド。 これは玠晎らしい機䌚です

あなたは誰ですか
私たちのサむトは、個人の昇進や名声の獲埗ではなく、PHPコミュニティの過激䞻矩ず闘うずいう考えに専念しおいたす。 名前を明らかにした堎合、これはサむトで発生した問題から泚意をそらすだけです。 気を散らさないようにしたしょう。

゜フトりェア開発の経隓はどうですか
私たちのりェブサむトに反映されおいるアむデア、考え、解決策にたどり着くために、他の人が蚀うこずを垞にするなら、倚くの経隓は必芁ありたせん。

掚奚読曞


  1. PHPWrong Way-at Hacker News 。 私たちがサむトを立ち䞊げたずき、倚くの䟡倀ある議論を反映したHacker Newsに関する倚くのコメントがありたした。

  2. OOPなしでプログラムする方法 。 新鮮で代替的な芖点ブラむアンりィルは、OOPから始めおはならない3぀のビデオに぀いお説明しおいたす。 最埌に、非OOPコヌドの曞き方に関するいく぀かのメモで締めくくりたす。

  3. 仕事䞭のコヌダヌ。 プログラミング技術に関する考察 。 むンタビュヌは、15人の優秀なプログラマヌずコンピュヌタヌ科孊者ずの80時間近くの䌚話に基づいおいたす。 ここでは、圌らがどのようにプログラミングを孊んだか、どのように圌らのスキルを磚いたか、そしお圌らはプログラミングの将来に぀いおどう思うかに぀いおの倚面的な物語を芋぀けるでしょう。

  4. 資栌のあるプログラマヌの機胜 。 胜力ずは、タスクを完了するのに十分な経隓ず知識を意味したす。 スキル-この方法で䜕かをしおいる理由ず、それが党䜓像にどのように適合するかを知る。 蚀い換えれば、資栌のある開業医は垞に有胜な開業医ですが、その反察は必ずしも真実ではありたせん。

  5. 安党なプログラミングガむド ゜フトりェア開発ラむフサむクルに組み蟌むこずができるチェックリスト圢匏の䞀般的な安党なプログラミングテクニックのセットを含む、技術に䟝存しないドキュメント。 これらの手法を䜿甚するず、最も䞀般的な脆匱性を回避できたす。

  6. 安党蚭蚈の原則 。 Webアプリケヌションのセキュリティは、オヌプン゜ヌスアプリケヌション、゚ンドツヌ゚ンドWebサヌビス、独自のビゞネスサむトなど、成功するプロゞェクトの重芁なコンポヌネントです。 ホスティング事業者は安党でないコヌドに圓然泚意し、ナヌザヌは安党でないサヌバヌに譊戒したす。 このガむドの目的は、䌁業、開発者、蚭蚈者、および意思決定者が安党なWebアプリケヌションを䜜成できるようにするこずです。 , , .

  7. : PHP . - : , . , .

  8. . . , , . . , , . 40 , , . . Java, -.

  9. . , .

  10. . , : , , . , , .

  11. . — , . , : «» . « » , :

    • ,
    • ,
    • ,
    • .

Source: https://habr.com/ru/post/J308788/


All Articles