PHPで大規模Webサイトを書く際の問題集_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:57:17
オリジナル
807 人が閲覧しました

PHPはその使いやすさから急速に普及していますが、使いやすいということは使いこなせるということではなく、実際にWEBアプリケーションシステムを簡単に構築するために多くのプログラマが利用していますが、それをよく検討している人はどれくらいいるでしょうか。コードは保守が容易で、十分に堅牢で、十分に効率的で、十分に安全であるため、これらは PHP を使用して大規模な Web サイトを構築する場合に重要な要素になります。より小さな問題から始めて、いくつかの致命的な間違いに移りましょう。 3 つの部分に分かれています。
パート 1、マイナーエラー

1. Printf()、
この関数は主にデータのフォーマットと表示に使用されます。特定のデータの表示形式を変更したい場合にのみ使用してください。
たとえば、PI (3.1415926) の値をさまざまな精度で表示します。
/*
* Π の 3 つの顔
*/

printf ("Pi は: %.2fn
n", M_PI)
printf ("Pi も: % .3fn
;n", M_PI);
printf ("Pi も: %.4fn
n", M_PI);
?>

しかし、多くのプログラマーは、これをいくつかの変数値を表示するためにのみ使用します。関数の戻り値。 Printf() はデータを表示する前にデータを整形するため、速度が遅くなります。そのため、データを表示する場合にのみ print と echo を使用して高速化します。

2. セマンティックチェック
PHP は弱い型付けの言語であるため、使用する前に変数を定義する必要がありません。これにより、プログラミングに大きな利便性と柔軟性がもたらされますが、変数がどこにあるべきかを知っておく必要があります。これは、変数が実行時に実際には依然として特定の型に対応しており (さまざまな型を相互に自由に変換できます)、型のない変数は存在しないためです。 PHP がセマンティック エラーを検出できない可能性はありますが、変数の型の変更により、潜在的な問題が発生する可能性があります。注目に値するもう 1 つの問題は変数のスコープであり、これも潜在的な問題を引き起こす可能性があります。
PHP には次の基本変数があります:
ブール値、リソース、整数、倍精度浮動小数点数、文字列、配列、オブジェクト。

3. 一時変数の使用
一時変数を乱用すると、プログラムの動作効率の低下につながります。一時変数をいつ使用するかは、次の 2 つの考慮事項に基づいて決定できます:
1. 変数が少なくとも 2 回使用されているかどうか。
2. この変数を使用するとプログラムの可読性が大幅に向上するかどうか。
上記のいずれも満たされない場合、この変数の使用は省略されます。例:
$tmp = date ("F d, h:i a"); /* 例: 1 月 3 日の午後 2 時 30 分 */
print $tmp; > :
print date ("F d, h:i a");
?>

別の例:

// string reverse_characters(string str)
// すべてを反転
function reverse_characters ($str)
{ return implode ("", array_reverse (preg_split("//", $str));
}

?> 可読性に変更されました:

// string reverse_characters(string str)
// 文字列内のすべての文字を反転します
function reverse_characters ($str)
{
$characters = preg _split (" //" , $str);
$characters = array_reverse ($characters);

return implode ("", $characters);

?>

4. クライアント側とサーバーのコードの分離PHP プログラムのサーバー側コードは、実際には HTML コードと PHP 言語コードを 1 つのファイルに混在させることが多く、このスタイルはプログラムのメンテナンスや再開発に非常に不利であり、適切ではありません。大規模なサイトの開発に。一般的な 2 つのメソッドを持つ HTML と PHP の説明:
1、编写专用 API、例:

index.php ? クライアント側
 
 
 
<タイトル>   
 
 

  

 
 
 
 
 
 
 
 
 
 
 
 
 


site.lib ? サーバー側コード



$dbh = mysql_connect ("localhost", "sh", "pass")
or die (sprintf ("Cannot connect to MySQL [% s]: %s",
mysql_errno (), mysql_error ())); 
@mysql_select_db ("MainSite")
or die (sprintf ("データベース [%s] を選択できません: %s",
mysql_errno (), mysql_error ())); 

$sth = @mysql_query ("SELECT * FROM site", $dbh)
or die (sprintf ("Cannot execute query [%s]: %s",
mysql_errno (), mysql_error ())); 

$site_info = mysql_fetch_object ($sth); 

function print_header ()
{
global $site_info; 
print $site_info->header; 
}

function print_body ()
{
global $site_info; 
print nl2br ($site_info->body); 
}

function print_links ()
{
global $site_info; 

$links = explode ("n", $site_info->links); 
$names = explode ("n", $site_info->link_names); 

for ($i = 0; $i < count ($links); $i++)
{
print "ttt
$names[$i]
n
n"; 
}
}
?> 

この方法では、プログラムがより丁寧に見え、実行速度も速くなります。

2、モジュールを使用する方法
この方法では、プログラムがより正確に見え、同様に上記の機能が実現され、以下のコードを使用できます。
< ;html> 
 
%%PAGE_TITLE%% 
 
 

%%PAGE_TITLE%%

 
 
 
 
 
 
%%PAGE_LINKS%% %%PAGE_CONTENT%%
 
 
 

自動的に生成された内容をビットマップに置き換え、その後、解析プログラムを使用してそのモールドファイルを分析し、ビットマップのコンテンツを置き換えます。 。この方法の欠点は、テンプレートファイルを解釈する必要があるため、実行効率が高くないことです。同時に、実装もより複雑になります。

注: www.thewebmasters.net の FastTemplate クラスは、上記の機能を簡単に実装できます。

5. 古い関数を使用しないでください
PHP はフリー ソフトウェアとして急速に開発されており、次のような関数の多くが古いです。

while (1):
print "5"
if ($idx++; = = 5):
Break;
endif;
endwhile;

これはまだ使用できますが、明らかに効率的ではなく、将来のバージョンでは無効になり、プログラムが実行されなくなる可能性があります。したがって、常に最新の PHP マニュアルを参照して、どの関数が古くなっているのかを確認し、適時に修正する必要があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317863.html技術記事 PHPはその使いやすさから急速に普及していますが、使いやすいということは使いこなせるということではなく、実際にWEBアプリケーションシステムを簡単に構築するために多くのプログラマが利用していますが、どれだけの人が注意深く検討しているでしょうか...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート