PHP開発者向けのいくつかのヒント

画像 現代のPHP開発者向けのヒントの小さなコレクションを公開したいと思います。 私は意図的にそれらを特定のフレームワーク、ライブラリなどに関連付けません。 私のアドバイスが、誰かがPHPをよりよく理解し、それをより良く使用する方法を学ぶのに役立つことを願っています。 それらのいくつかは、PHP固有ではなく、一般的なプログラミング用です。

高速PHPコードには、最小限のPHPが含まれています。

おそらく、このアドバイスはインタープリター言語の多くの開発者に適しているでしょう。 PHPには、多数のネイティブ(Cで記述された)関数が含まれています。 それらの速度は、PHPの類似物を超えています。 PHPの類似物の代わりにそれらを使用してみてください。

実際、もちろん、すべての組み込みPHP関数を覚えておくのは困難です。 私は自分でルールを作成しました。関数を書く前に、ドキュメントでそれを探してみてください。 ほとんどの場合、ネイティブ関数が見つかります。

例:
1. URLをコンポーネントに解析する必要がありました。 そのようなことには正規表現を使わないようにしています。 関数がすぐに見つかりました: parse_url
2. Parse_url関数はurlを正常に解析できましたが、今ではurlからGETパラメーターを解析する必要がありました。 このために、関数parse_strが見つかりました。

拡張機能はPHPコードよりも高速です。

PHPには、拡張リポジトリーPECLがあります。 そこには多くの興味深いものがあります。 拡張機能もCで記述されており、PHPの拡張機能よりも高速に動作します。 たとえば、 apcyamlを使用します。 私は思う、そしてあなたはあなた自身のために多くの興味深いものを見つけることができます。

サードパーティのコードを慎重に使用してください。

PHPで実装された製品で私が遭遇した最大の問題の1つは、サードパーティコードとの高い接続性であり、サードパーティツールを別のものに置き換えることはできません。 実際、このアドバイスは接続性を最小化する一般的なアプローチに関連していますが、サードパーティのコンポーネントでは特に問題が深刻です。

サードパーティライブラリを使用する場合は、まず、プロジェクトのフォルダ構造にサードパーティツール用の特別なディレクトリがあることを確認してください。 プロジェクトコードとサードパーティツールコードを混在させないでください。

次に、ライブラリを操作するための独自のクラスを作成します。これにより、ライブラリへの呼び出しがプロキシされますが、これらのクラスのインターフェイスはライブラリのインターフェイスに対応する必要はありません。 これらのクラスのロジックを変更することで、プロジェクト自体を書き換えずに別のライブラリに切り替えることができるように、一般的なものであり、この特定のライブラリに関連付けられていない必要があります。

ライブラリを交換可能にする必要がある場合は、インターフェイス、プロバイダー、または抽象ファクトリーを作成する必要があります。

いずれにせよ、プロジェクトとサードパーティのツールとの直接接続を許可することはできません。他のソリューションはより収益性が高くなります。



PEARを使用するかどうかにかかわらず、とにかくそれが何であるかを知っておく必要があります。 PEARは、多くの一般的なタスクのためのPHPクラスのリポジトリです。 次のアドレスにあります: pear.php.net/packages.php PEARのクラスは、特別な品質、サポート、またはその他の点で区別されるとは言いません。 これは基本的に、phpclasses.orgよりも便利な単なるクラスリポジトリです。 PHPでPEARパッケージをインストールおよび削除するための「 pear 」コマンドもありますが、同じ成功を収めて、PEARパッケージをアプリケーションフォルダーに入れて使用することもできます。

PHP 5.3を使用します。

ホスティングが選択されているプロジェクトで作業していない場合は、必ずPHP 5.3に切り替えてください。

このPHPラインの最も重要な革新は、匿名関数です。 代わりに:
関数 my_temp_map( $ x ){
return $ x + 1;
}
$ result = array_map( 'my_temp_map'、 $ arr );

あなたは書くことができます:
$ result = array_map( function$ x ){ return $ x + 1;}、 $ arr );

さらに、サブ関数を宣言してクロージャーを使用できるようになりました。
パブリック 関数 myMethod( $ data ){
$ subFunction = function () use$ data ){...};
$ x = $ subFunction ();
}


匿名関数に加えて、多くの興味深いものが追加されました: php.net/ChangeLog-5.php

次に、詳細について説明します。

「@」演算子は使用しないでください。

特定の命令を実行するときにエラーを隠すために使用される@演算子は、次の2つの理由で悪いです。1つ目は遅く、2つ目は、関数呼び出しに使用すると呼び出される関数でエラーの発生を自動的にブロックするため、慣れることが望ましくないためですそれは望ましくないかもしれません。

多くの場合、キーの存在について確実性がない場合に連想配列にアクセスするときに「@」演算子が使用されます。 この場合、次の設計を行うことができます。

$ x = isset$ arr [ 'x' ])? $ arr [ 'x' ]: null ;


cp1251を使用しないでください。

まだutf8に切り替えていない仲間! さあ! 早ければ早いほど良い。

utf8を使用する場合、mbstring拡張(コンパイル時に通常のセットに含まれる)でコンパイルされたPHPが必要になります。

E_ALLモードで作業する| E_NOTICE | E_STRICT

このモードでは、プロジェクトで作業を開始する場合にerror_reportingを設定する必要があります。 通知は、多くの場合無視されるものであると同時に、ほとんどの場合エラーが含まれます。 未定義の変数、存在しないキーを持つ配列などにアクセスした場合、通知が表示されます。 配列内の変数/キーの存在が不明な場合は、 isset演算子で確認する必要があります。

phpmanualを再読み込みします。

PHP開発チームは、プロジェクトで使用できる大量の機能を実装しています。 そのほとんどは公式ドキュメントに記載されており、常に更新されています。 知識を更新し、定期的にマニュアルを確認して知識を増やしてください。

少なくとも、すべてのphp.ini設定とその影響を知る必要があります。

進化する。

コードを読んでください。 はい 使用するツールのコードを読んでください。 開発中のフレームワークのコードを読んでください。 非常に興味深く、便利です。 また、このコードを作成するのは神ではなく、あなたと同じプログラマーであることを学びます。 そして、注意すれば、多くの最適でない瞬間や間違いを見つけるでしょう。

書きます。 準備が整っていてもツールを作成します。これが必要な場合は、サードパーティ製ツールをタスクに合わせて調整する松葉杖を作成しないでください。 あなたよりも経験豊富な人がフレームワークを書いていると思いますか? これらのフレームワークのコードを確認してください。

これで私のアドバイスは終わりです。ご清聴ありがとうございました。

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


All Articles