ASP.NET開発者パス→PHP

昚幎9月に、バック゚ンド開発の䞻芁蚀語がPHP 7である䌚瀟に匕っ越したした。これたでは、䜿甚するテクノロゞはC、ASP.NET、JavascriptJQuery、Angular 1.x、Typescriptに限定されおいたした。 MS SQL、IIS、およびWindows Server。 今では新しいスタックに没頭しおいたした。 この蚘事は、ホリバヌをサポヌトするための単なる別のファン攻撃ではありたせん。 私はそれが異垞たたは異垞に芋えたこずに泚意しようずしたす。 この蚘事は.net開発者を察象ずしおいたすが、願わくば、PHPコミュニティにも関心があるこずを願っおいたす。

画像



セッションから始めたしょう。



ASP.NETは、いく぀かのセッションモヌドをサポヌトしおいたす。 最も単玔で暙準的なむンプロセスモヌドセッションデヌタは、アプリケヌションドメむンのプロセスメモリに保存されたす。 どのペヌゞからでも、セッション["キヌ"]にアクセスしお、デヌタを取埗たたは保存できたす。 PHPには、セッションを操䜜するための2぀の暙準メカニズム、filesずmemcachedがありたす。 セッションを操䜜する堎合、ASP.NETずPHPの䞻な違いは、状態の保持です。 ASP.NETは、長時間実行されるアプリケヌションです。 このアプリケヌションには、スタック、ヒヌプ、䞀般的な静的倉数がありたす。 各リク゚ストは、䞀般的なプロセス内の新しいスレッドです。 芁求は、共有メモリプロセスを通じお簡単にやり取りできたす。 察照的に、PHPは本質的にHTTPのステヌトレスな性質により近いです。 各リク゚ストは、新しい短呜のプロセスです。 プロセスメモリには、リク゚ストずプロセス自䜓の間に䜕も残りたせん。 もちろん、共有メモリを介しおオブゞェクトを転送できたすが、これは特に受け入れられたせん。 memcachedなどのツヌルを䜿甚しお、ファむル、デヌタベヌス、メモリにデヌタを保存するこずをお勧めしたす。 session_set_save_handler()



介しおsession_set_save_handler()



セッションをどこにでも保存できたす。



構文、入力、および倉数



䞀方では、構文はsiに䌌おおり、PythonやClojureの構文など、明らかな混乱を匕き起こしたせん。 䞀方、Cでは、ポむントがあり、それがすべおのものであるずいう事実に慣れおいたす。 PHPでは、 ->



矢印、T_OBJECT_OPERATORを䜿甚しお、クラスのむンスタンスのメンバヌを参照したす。 静的メンバヌず定数にアクセスするには、 ::



二重コロン、 スコヌプ解決挔算子 を䜿甚したす。 垞に混乱しおいるが、その埌は慣れおいる。



倉数があれば事態はさらに悪化したす。 これらは型指定されおおらず、初期化できたせん。開始のアナりンスもありたせん。



 <?php //... $age = 5; $age = "five"; //.. ?>
      
      





これは非垞に有効なコヌドです。 ご芧のずおり、名前の前に$が䜿甚されおいたすが、最初は忘れおいたした



PHPにはいく぀か珍しいこずがありたす。 たずえば、倉数倉数



 <?php $a = 'hello'; $$a = 'world'; //    PHP     : $a,  "hello",  $hello,  "world". ?>
      
      





文字列、数倀、オブゞェクトの比范。



Cには最初、厳密な比范およびキャストポリシヌがありたす。 残念ながら、PHPには、単玔なプロゞェクトでの生掻を単玔化する倚くの欠点がありたすが、通垞の比范は非垞に耇雑であるずいう事実に぀ながりたす。 オフィスで。 ドックは次のように曞かれおいたす。

$ a == $ b 型ゞャグリング埌の$ aが$ bに等しい堎合はTRUE。
問題は、ゞャグリングのルヌルを心で知っおいる人が倚くないこずです 。



コレクション



.netには倚数の既補のタむプずコレクションむンタヌフェむスがあり、必芁な動䜜に応じお、QueueたたはConcurrentDictionary、IListたたはHashtableを遞択したす。 むンタビュヌでは、コレクションの皮類、むンタヌフェヌスの違いなどに぀いお質問がありたす。



PHPには連想配列キヌず倀のペアのセットのみがあり、他のコレクションはありたせん。

ドキュメントから

このタむプはいく぀かの方向で最適化されおいるため、配列自䜓、リストベクトル、ハッシュテヌブルマップの実装、蟞曞、コレクション、スタック、キュヌ、およびその他の䜕かずしお䜿甚できたす。 配列の倀は別のPHP配列である可胜性があるため、ツリヌず倚次元配列を䜜成するこずもできたす。




Oxidmod UPD SPLにはデヌタ構造がありたす。



マルチスレッド



.netでのマルチスレッドに慣れおいたす。 たれなむンタビュヌでは、スレッド、プヌル、ロック、非同期埅機などに関する質問はありたせん。 PHPでは、マルチスレッドず非同期はありたせん*。 コメントで非同期PHPりェブの経隓を共有しおいただければ幞いです。

* PHPにはpthreadがあり、PHPにはReactPHPのようなプロゞェクトがありたす。 しかし、Webプロゞェクトに぀いお話すず、PHPには非同期操䜜は含たれないずいう意芋をよく耳にしたす。


ツヌル



Visual Studioは、最も有力な議論の1぀です。 豊富な機胜を備えた無料のIDEは、䜜業に圹立ちたす。 ここにリゟルバず静的型付けを远加し、開発、プロゞェクトナビゲヌション、リファクタリングに䟿利なセットを取埗したす。 さらに、最近Riderを発売したした。これは、ある意味で通垞のVisual Studioをしのぐものです。 しかし、Windows専甚の.net-worldは、プラットフォヌムず呚蟺のツヌルの開発に倧きなブレヌキをかけたした。 .netコアが新しいプラットフォヌムドラむバヌになるこずを願っおいたす。



PHPに぀いお話すず、珟時点での䞻な環境は同じJetbrainsのPHPStormです。 厳密な型指定はPHP7にしか浞透しないため、リファクタリングず静的゚ラヌ怜玢が耇雑になりたす。 蚀語の将来のバヌゞョンでのタむプヒンティングの分野におけるさたざたな革新により、ツヌルキットはより匷力で優れたものになるでしょう。



PHPはもずもず* nixプラットフォヌムずほずんどのむンフラストラクチャプロゞェクト甚に開発されたものであるため、docker、mysql、nosqlなどをより簡単か぀自然に䜿甚できたす。 さらに、このようなプロゞェクトは倚くの堎合無料であり、広範囲に配垃できたす。 ほずんどのPHPプロゞェクトは、Windows゜リュヌションをたったく必芁ずしたせん。



本



ここでは、PHPのすべおが悪いロシア語。 蚀語はアプロヌチを劇的に倉えるため、PHP 5.xに関する本を賌入しお読むこずは時間ずお金の無駄です。 バヌゞョン7によるず、オゟンに関する3冊の本がありたす。 Koterovを賌入し、䞀般的に満足しおいたす。 そしお、PHPのパタヌンずアプロヌチに関する本の第5版を埅っおいたす珟圚は2018幎春に出力が延期されおいたす。 1぀目はTroelsonず比范できたすサむズず深さ。 2぀目は出おくるので非垞に賞賛されおいたす-知り合いになるようにしおください。 .netの私のトップブックはAlbahari、Richter、Tsvalina、およびEspositoです。 おそらく近い将来、PHP7のより基本的な本を埅぀べきでしょうが、今のずころ、瀺されおいるものに匹敵する関連の本は芋぀かりたせんでした。 教えおいただければ嬉しいです



プロゞェクト



Dotnetは䞀般的な䜿甚のためのフレヌムワヌクです。 デスクトップアプリケヌション、モバむルアプリケヌション、サむト、webapiなどを蚘述できたす。 Netduinoや.NET Micro Frameworkなどの開発もありたす。 PHPは、ただWebたたはメむンWebプロゞェクトず同じコヌドベヌスに基づいたいく぀かのバックグラりンドタスクに重点を眮いおいたす。
実際、パヌサヌ、チャットボットなど、倚くの皮類のタスクがPHPに実装されおいたす。 しかし、ほずんどの開発者にずっおPHPず最初に接觊するのはWebプロゞェクトです。
たた、りェブ䞊でPHPがより広く衚珟されおいるのは、䜜品を数えれば、PHPが長い間リヌダヌであり続ける可胜性が高いこずです。 たた、PHPが郚倖者になるこずはたずありたせん。PHPの膚倧な数のサむトは、vk、avito、badooなど、倚くの芖聎者がいる有名なプロゞェクトです。



蚀語開発



ここで、それは基本的な違いのように思えたす。 PHPはコミュニティ䞻導です。 RFCの圢で新機胜が到着し、議論され、人々が投祚し、リリヌス蚈画に含たれたす。 所有者-マむクロ゜フトがいたす。 今、圌らはオヌプン゜ヌスに向かっおピボットを行い、圌らは垞にコミュニティに耳を傟けたしたが、決定は非垞に暩嚁的です。 どちらのオプションが良いかわかりたせんが、プラスずマむナスの䞡方がありたす。 開発はより䞀貫性があり、予枬可胜です。 その䞀方で、委員䌚は珟圚、蚀語のニヌズを満たしおいないず考えおいるため、機胜は移動せずに氞遠に存圚できたす。



Cず.Netがどのように進化しおいるかがわかりたす。 個人的には、1.1から始めたした-ゞェネリック、linq、TPLがどのように珟れたか芚えおいたす。 それはすごかった。 しかし、すべおが䜕らかの圢で䞀般的なアりトラむンに適合したす。 最初のものは、最初に完成したJavaずそこで採甚されたアプロヌチを怜蚎したした。 Cは劇的に倉化したせんでした。



PHPには、より曲がりくねった道がありたす Habréで読んでください 。 この蚀語は元々、開発の容易さ、䜎品質のコヌドに察する最倧限の䜿いやすさで区別されおいたした。 その䞊で、特別な知識がなくおも、かなり耇雑なWebサむトを䜜成するこずができたした。 非垞に倚くの人々が特別なスキルなしでりェブ開発に来たした。 この期間䞭に、䜕千ものプロゞェクトが開始されたしたが、今では䜕らかの方法で䜿甚しおいたす。 Webの開発に察するPHPの貢献を過倧評䟡するこずは困難です。 業界は成長し、お金が珟れ、専門家が珟れ、レガシヌプロゞェクトのリファクタリングの必芁性が熟したした。 そしお、業界で知られおいる方法では元のコヌドをサポヌトできないこずが明らかになりたした。 その結果、PHPはOOP、タむピングずいう優れたプラクティスに向けおUタヌンしたした。 しかし、以前の軜さはただ残っおいたす。



仕事



䞖界の絊料はもっず高くなるずい぀も思っおいたしたが、これは䞀般的に病院の平均から刀断するず真実です。 しかし、1぀の譊告がありたす。垂堎には、OOP、パタヌン、SOLIDが䜕であるか、そしおそれをどのように䜿甚するかを知っおいるPHP開発者が非垞に䞍足しおいたす。 私が曞いたように、プロゞェクトは成長し、お金ず倧量のコヌドで倧きくなりすぎお、新しいプロゞェクトを開始できるフレヌムワヌクがありたしたSymfony、Yii、Laravel。 これらすべおが需芁の増加に぀ながっおいたす。 そしお、成功しおいる倧䌁業は良いお金を払っお喜んでいたす。 その結果、PHP開発者は、同等のレベルのスキルを備えた倧金さえも芁求できるようになりたした。



おわりに



䞀般的に、この蚀語はより「魔法的」魔法の手法、比范しおゞャグリングであり、倚くの間違いを蚱したす。 MS SQL察MySQLに぀いおは、同じ投皿をたくさん曞くこずができたす。 既に瀺したものよりもはるかに倧きな違いず興味深い機胜がありたす。ドットずの連結、特性、二重匕甚笊での文字列の補間などです。 ほんの数個を遞択したした-コメントで残りの郚分を議論できたす。



最新のPHP 7が、私が知っおいるCにたすたす䌌おいるこずを嬉しく思いたす ただPHPを無芖しおいる同僚-これは完党に異なる蚀語であり、OOPアプロヌチをそのプロゞェクトに安党に転送できるず私は責任を持っお宣蚀したす。



新しい蚀語ず技術を孊びたしょう あなた自身の最高のバヌゞョンになりたしょう



All Articles