は
標準化されている必要があり、良い PHP コードは安全である必要があります。
PHP コードの長所と短所は何ですか?この質問は、単に PHP 関数の習熟度をテストするのではなく、候補者がどのようなタイプのプログラマーであるかを一般的に把握できるからです (Zend の PHP 認定資格はこの点に優れており、Yahoo の PHP プログラマー面接の質問も同様です)。
重要なのは、この質問により、候補者が怠惰なプログラマーから乱雑なコードを引き継いで再利用した経験があるかどうか、またはチームの他のメンバーがこの種の作業を手伝った経験があるかどうかがわかります。
確かに、私自身もこの質問に対して満足のいく答えを持っていませんが、私が聞きたい答えはわかっています。つまり、
優れた PHP コードは構造化されている必要があります。コードの大きなセクションは関数またはメソッドに分割する必要がありますが、目立たないコードの小さなセクションは、目的が後で明確になるようにコメントする必要があります。そして、HTML、CSS、JavaScriptなどのフロントエンドコードは、プログラムから可能な限り分離する必要があります。 PHP のオブジェクト指向プログラミング機能は、プログラマーがコードを秩序だった方法で編成するのに役立ちます。
優れた PHP コードは標準化される必要があります。変数名や関数名の命名規則を設定する場合でも、データベース操作やエラー処理などの再利用可能なプロセスを標準化する場合でも、コードのインデント方法を指定するなどの単純な場合でも、これらの標準化によってコードの可読性が大幅に向上します。
優れた PHP コードは適応性がある必要があります。 PHP にはマジック クオートや短いタグなどの多くの機能があり、これらの機能をオンまたはオフにすると、プログラムの実行に影響します。したがって、優れたプログラマは、環境に応じてプログラムを調整できるように、コードに適切なステートメントを追加する必要があります。
優れた PHP コードは安全である必要があります。 PHP は固定フレームワークを持たない効率的で柔軟な言語ですが、セキュリティの問題はプログラマーに任されています。クロスサイト スクリプティング (XSS)、クロスサイト リクエスト フォージェリ (CSRF)、コード インジェクションの脆弱性、文字エンコード ループの脆弱性など、潜在的なセキュリティの脆弱性を深く理解することは、今日のプロのプログラマーにとって非常に重要です。
候補者がこれらの質問に答えれば、その人を採用すべきかどうかが明確にわかります。もちろん、プログラマーが問題をうまく説明できない場合もあり、私たちはプログラマーに PHP テストを依頼します。テストの問題の多くは、表面的には非常に単純に見えるかもしれませんが、注意深く見れば問題を見つけることができるため、受験者に自分の考えを表現する機会を与えます。
次の小さな「貧弱な」PHP コードは、簡略化されたテスト問題です。この質問は、「このコードをどのように最適化すべきですか?」と尋ねているようなものです。
<?
echo("<p>クエリの検索結果: " .
$_GET['クエリ'] ".</p>");
?>
このコードの主な問題は、ユーザーが送信したデータを Web ページに直接表示するため、XSS 脆弱性が生じることです。実はこの穴を埋める方法はたくさんあります。では、どのようなコードが必要なのでしょうか?
<?
echo("<p>クエリの検索結果: " .
htmlspecialchars($_GET['query']) .</p>");
?>
これは最小要件です。 XSS の脆弱性は htmlspecialchars 関数によって埋められ、不正な文字がブロックされました。
<?php
if (isset($_GET['query']))
{
echo '<p>クエリの検索結果: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
このようなコードを書ける人こそ私が雇用したい人材のはずです。
<? は <?php に置き換えられ、XML 仕様との整合性が向上しました。
$_GET['query'] の値を出力する前に、まずそれが空かどうかを判断します。
echo コマンドの余分な括弧が削除されました。
文字列は一重引用符で修飾されるため、PHP で文字列内の置換可能な変数を検索する時間を節約できます。
エコー時間を節約するには、ピリオドの代わりにカンマを使用します。
ENT_QUOTES フラグを htmlspecialchars 関数に渡して、一重引用符もエスケープされるようにします。これは最も重要なことではありませんが、良い習慣でもあります。
残念ながら、そのような満足のいく答えを与えることができるプログラマーはほとんどいません。満足のいくプログラマーを採用するまでに 3 か月かかりました。
それでは、この記事の冒頭で提起された質問にどう答えるでしょうか? PHP コードの長所と短所は何だと思いますか? PHP プログラマーには他にどのような資質が必要だと思いますか?
この記事の引用元: http://www.yeeyan.com/articles/view/38585/18736
元のリンク: http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/