PHPの「高度な」知識をさらに増やす方法は? (すぐに)[閉じた

StackOverflow https://stackoverflow.com/questions/2948323

  •  05-10-2019
  •  | 
  •  

質問

私は何年もPHPを扱っており、言語を非常によく把握してきました。

私が遭遇している問題は、以前に学んだことがないことが必要だとわかったときにのみ学ぶことです。これにより、問題を処理するソリューションやその他のコードを検索するため、これまで見たことのない新しい機能や構造について学びます。このようにして、私は自分のより良いテクニックの多くを学びました(Amazon、Google、またはその他の大手企業が出したクラスの勉強など)。

これの主な問題は、それが存在することがわからない場合、何かを学ぶことができないという概念です。たとえば、それについて学ぶために数ヶ月のプログラミングがかかりました empty() 関数、そして私は単に文字列の長さを使用してチェックします strlen() 空の値を確認します。

私は現在、より大きくてより大きなシステムの構築に取り組んでおり、HighScalability.comのようなブログを読み始め、MySQLレプリケーションとサーバーデータをスケーリングのために調査しています。私はあなたのコードの構造が完全なシステムを機能させるために非常に重要であることを知っています。

Redditの構造に関する最近のブログを読んだ後、標準または「受け入れられているシステム」があるかどうかは疑問に思いました。

私はフレームワークを調べました(私はコハナを使用しましたが、後悔しましたが、PHPフレームワークは私には向いていないと判断しました)。

私の現在の構造は、WordPress、Kohana、および私自身の知識の間の混合です。

潜在的に有益であると私が見ることができる方法は次のとおりです。

  • ブログを読んでください
  • チュートリアルを読んでください
  • 他の誰かと一緒に働きます
  • 本を読む

非常に優れたシステム開発者であるというレベルを「次のレベルに到達する」ための最良の方法は何でしょうか?

役に立ちましたか?

解決

PHPプログラマになりたい人は誰でも、常に最初の単語だけを取り、2番目の単語を完全に無視します。

「プログラミング」は「PHP」よりもはるかに重要ですが、PHPの専門家であるためには、そもそもプログラマーである必要があります。

だから、私は最後のものに投票する - 本を読む。 PHPではなく、一般的にプログラミングで。 Grady Booch's、 マーティン・ファウラー'and and Ald ドナルド・クヌース'のもの。
また、JavaやPythonなど、他の言語をご覧ください。彼らに切り替えるのではなく、彼らから学ぶために。

他のヒント

私はフレームワークを持っているよりも、自分の機能のライブラリを好む

「関数のライブラリ」と「A「フレームワーク」を明確な概念と呼びます(良い!)。これは学ぶのに最適な方法ですが、市場性のあるスキルを持つための最良の方法ではありません;)

また、学ぶのに最適な方法です 間違い したがって、開始する前に、いくつかの調査を行う必要があります。

「必須」機能

ほぼすべてのフレームワークが持っている特定の機能があり、その理由があります。それらを調査します。探し出す どうして それらは存在し、そのバリエーションは何ですか。フレームワークに含めることをお勧めする実装を選択します。

理解してエミュレートしたい非PHPプラットフォームの機能

何があなたに興味を持っているのかわからないので、そこで止まります。

公開!

この部分は重要です ネイサンは正しい: :あなたの仕事は、他の人々によって見られ、挑戦され、批評され、修正されなければなりません。そのランプをブッシェルの下に残さないでください - それは見る必要があります。 GoogleコードやSourceForgeなどに置いてください。人々が真剣に見ていることを気にするなら、真剣に受け止める必要があります。ユニットテストと回帰テストを維持する必要があります。バージョンコントロールを使用する必要があります。あなたはそれをうまくコメントする必要があります、大きな /* header comment */ 各ファイルの上部と、各クラスとそのメンバーの有用なドキュメントを生成するコメント。

概要

これをすべて行うと、他のプラットフォームについて(高レベルで)学ぶことができます。 PHP開発者として「Ding 40」を間違いなくできます。ユニットテストについて学ぶことができます。回帰テストについて。効果的に文書化について学ぶことができます。

あなたのフレームワークが「特異性とおそらく吸血」が出てくることを保証しますが、あなたはそれを書くことから多くを学ぶことができます。フレームワークは製品ではないことに注意してください。それはある種の旅です。

  1. 調べてください PHPの隠された機能PHPの事前定義されたインターフェイス
  2. さまざまな言語を学びます。 PHPよりも急な学習曲線を持つ言語を学びます。 PHPをめぐる他の言語の利点を指摘するたびに、私はPHPバッシングで告発されています。ほとんどの場合、明らかに別の高レベルの言語を実際に習得したことがない人々です。しかし、私は危険を冒すつもりです。 Ruby、Python、Pearl、Andをお勧めします ハックス (厳密にタイプされた対応物として)。したら、新しい知識をPHPに適用してみてください。または、戻りたくない場合に備えて、PHPから離れるだけです(これは起こりそうにないと思います)。
  3. 批評家に対処することを学びます。ネイサンの投稿に対するあなたの反応は、まだあなたがそれに対処できないことを非常に明らかに示しています。彼は絶対に正しい。
    • 今の最初のPHPフレームワークを見て、私はそれが非常にくだらないと言わざるを得ません。当時、私はそれが素晴らしいと思っていました(そして、それは私がすでに展開しているのを見てきた多くの制作コードよりもまだ優れています)。それでも、それには多くの欠陥がありました。あなたが完全に天才でない限り、数年後に振り返ると、最初のフレームワークはひどく見えます(進化していると仮定します)。
    • 実際、作成するフレームワークは、時間が進むにつれて悪化します(進化を停止しないと仮定します)。このため、利用可能なフレームワークを使用して、アプリケーションの開発により焦点を合わせることもできます。使用するフレームワークには制限がある場合は、さらに別のPHPフレームワークを作成するのではなく、貢献することを検討してください。
    • 独自のフレームワークを作成するためのポイント(楽しみ/学習だけでなく、生産展開のため)は、要件が他のフレームワークが提供するものを上回るときであり、それと一緒に作業するという考えが気に入らない場合ではありません。それはよくある間違いであり、私は自分でやったことです。しかし、今、私はそれから学んだと言えます。しかし、あなたがアドバイスを求めた場合(残念ながら私は当時はしませんでした)、あなたはこのような答えを得るでしょう。
    • あなたは自分自身を書かなかったコードを操作することから多くを学びます。 Frameworksによって推進された概念を取り上げているだけでなく、他の人が多くの考えを投げかけているだけでなく、生産的で柔軟で、チームで働き、仕事を成し遂げることができることも学びます(合理的に良い結果を得る間)。
    • PHPオープンソースプロジェクトのすべてのチームよりも優れているとは思わないと思います。そうしないと、尋ねるでしょう。若い開発者が持っているホイールを再発明する頑固な本能的なニーズを乗り越えて、まだ取り組んでいない問題に取り組むために成長してください。
  4. コンポーネントライブラリとフレームワークの間で、違いは何であるかを学びます。フレームワークを「独自の機能のライブラリ」に置き換えることができると思うので、おそらくフレームワークのポイントは何であるかを理解していません。見て 依存関係の反転, 制御の反転依存関係インジェクション.
  5. ソフトウェアデザインについて学びます。 ooの原則を見てください 個体把握.
  6. 別のパラダイムを試してください。 AOP、機能的なプログラミング。 Ruby、Objective-C、SmallTalkなどのより強力なオブジェクト向けの言語を使用して、OOスキルを向上させます。
  7. Flow3、Symfony、PHP Igniter、CakePHPなどのPHPフレームワークをご覧ください。私はあなたがそうすべきだと思う理由をすでに指摘しました。
  8. 私の別のコメントで指摘されているように、あなたはRDBM以外の他の貯蔵庫を考慮する必要があります。 SQLとOOPは本当にうまくいきません。 OODBMS、さまざまなデータベース抽象化レイヤー、キー価値ストア、CouchDBやMongoDBなどのドキュメントストアをご覧ください。キャッシングサーバーをMemcacheなどとして配布します。

ここにいくつかの考えがあります:

  • 別のことを試してみてください。新しい言語を学びます。他の言語が実際に両方であなたをより良くすることを学ぶ過程で時々。

  • オープンソースプロジェクトに貢献します。

  • 高いスケーラビリティとPHP/MySQLは友達ではありません。今日、そのためだけに構築されたテクノロジーがあります。 node.jsとredisカップルを挙げます。

  • SOで質問に答えます。他の人の問題は、あなたが箱の外で考えさせることができ、あなたは助けようとするプロセスを改善することができます、そしてあなたはまた誰かに何か良いことをします。

  • 他のことを考えればここに追加しようとします私はちょうどコーヒーを飲んで目が覚めただけです:D

あなたがすでに知っていることをすることを学ぶ...別の方法で。例:

  • 別の言語で
  • 別のプラットフォームで
  • 並列/分散
  • フレームワークを通して(はい、あなたは「あなたのためではない」と決めました - 多分別のものを試してみてください、彼らは時々お互いとは非常に異なることです)

フレームワークをもう一度調べる必要があるかもしれません。Zend Frameworkを見ることをお勧めします。なぜなら、それはあなたがフィットしたとおりに使用できるコンポーネントのライブラリのようなものであり、実際にあなたが従わなければならない剛性構造を課していないからです他のいくつかのフレームワークはそうします)が、それは(非常に正気なiMho)プロジェクトレイアウトを示唆しています。良い出発点はそうでしょう 深い終わりを生き延びます.

あなたがまだ言及していないこと、そしてそれは(特に大規模なプロジェクトで)知るのに役立つことが証明される可能性があります:

単純: やれ. 。ニーズはあなたに学びます。コマーシャルソースであれオープンソースであれ、ますます高度なプロジェクトに参加する方法を見つけてください。本当に何かを学ぶことができる他の方法はありません。

私はディスカッションボードに参加し、他の人々の問題を解決しようとします。時々、あなたが何らかの研究を強要する非常に挑戦的な質問があります。あなたがそれに答えることができないなら、あなたはそれができる誰かを待つことができ、それから何かを学ぶことができます。

フレームワークについては、それらから学びます。そこにあるフレームワークのほとんどはかなり遅くなる可能性があるため、私も自分のものを転がします。ただし、ほとんどのWebサイトで十分な速さです。

また、FacebookのPHPライブラリを見ることをお勧めします。彼らはそこでいくつかの興味深いことをします。

あなたができる最善のことは、で本を買うことです 効率的なアルゴリズム. 。すべてのコンピューターサイエンスの学生の人生には、彼/彼女がそれらを勉強しなければならない時が来ます。議論/解決される問題そこにあるのは、あなたがこれまでに直面する可能性のあるほとんどすべての現実世界の問題の抽象化があります。

他の人がどのようにしたかについてのブログを読むことに加えて、効率的なアルゴリズムの原則を実際に使用する(そしておそらく実装する)方法を理解するのに役立つので、それは完全にうまくいっています。

よろしく。

他の開発者と協力することについて十分ではありません。私は3人の開発者、特に2人、2人が毎日一緒に仕事をしていることを知っています。私は自分のアイデアをもう二番目に推測するからではなく、特に開発者として尊敬している人々から他のアイデアを聞きたいという理由ではなく、私がしていることすべてについて彼らの意見を聞きます。私はこれらの人々から他のどの手段よりも多くを学びます。他のシニア開発者にアクセスできない場合は、間違いなくSOまたは他の開発フォーラムに投稿して、人々の意見を尋ねるには、特定のプロジェクト/問題にどのようにアプローチするかを人々に尋ねてください。一般的に新しいテクニック /方法 /関数が使用されていない限り、一般的には学習しません(存在していない場合は何を探すべきかをどのように知るのですか?)

また、すでに述べたように、OSアプリに参加してください。 SourceForgeにアクセスして、開発者が必要なプロジェクトを見つけます。または、アプリをダウンロードして、それのためのプラグインを書くようにしてみてください(Invision 3.0 ATMのプラグインを書き、いくつかのことを学んでいます。)

それが役立つことを願っています。

他の人のコードを読んでください。あなたは今あなた自身のライブラリを持っていますが、他のアプリケーションのソースを読むときに啓発を得るかもしれません。次に、自問してみてください。読者の代わりに、ブログライターになります。また、言語よりもプログラマーに重点を置いています。むしろ、すでに問題を解決しているソリューションを見て、あなた自身の知識でそれらを再現しようとします。頑張って、たくさんの楽しみを!

他のプログラマーコードを見るアプローチは、間違いなく「良い」または「悪い」プラクティスを学ぶ良い方法です。他のコードを読んだ後、良いコードの「感情」を開発します。

多くの貢献者がそのコードを見て、「理想的な」ソリューション(もちろん到達することは決してない...);あなたはまだ作ることができます。フレームワークが提供するクラスの代わりに、独自のクラスを開発する決定...

このような長いPHPの背景を使用すると、オープンソースのフレームワークに貢献することを検討できます。他の開発者との話し合いは、より速い方法であなたを前進させます。

他の人にコードを表示し、建設的なフィードバックを要求することは同じ効果があります。あなたのスキルを他の人とベンチマートするまで、あなたはあなたがどれほど良いかを決して知りません。常に建設的な方法で。これは、オープンソースのフレームワークに貢献する場合の自然なプロセスになります。 ;)

例を操作し、拡張するときにそれらと連携して、それらをより機能的にし、より多くの機能を提供することで例を拡張する方法を学ぶ必要があります。

しかし、これまでPHPで学んだことを作成するのは良いことです。さらに練習するには、予約システムなどを作成する必要があります。遅かれ早かれ、PHPでより多くを勉強すると、開発がはるかに良くなるようにすることで、より多くのことを学ぶことができます。

Zend PHP認定試験を支払うことができるかどうかを会社に尋ねることができます。この試験のために勉強すると、多くのドキュメント、Zend Study Guide、および模擬試験でトレーニングすることで、PHPをよく知り、トレーニングすることができます。それは非常に効率的な改善方法であり、履歴書には非常によく見えます。

「私自身の機能のライブラリ」== [特異でおそらく吸う]フレームワーク」。

学ぶことをお勧めします Symfony 開発者は、「最高の」プラクティスに従ってすべてを行うように一貫して努力しているように見えるからです...しかし、おそらく、人気のあるフレームワークから多くを学ぶことができます。

独自のフレームワークを書かないでください。お願いします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top