ホームページ > php教程 > php手册 > PHP で大規模な Web サイトを作成する問題のコレクション

PHP で大規模な Web サイトを作成する問題のコレクション

WBOY
リリース: 2016-06-13 12:33:42
オリジナル
860 人が閲覧しました

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

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

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

しかし、多くのプログラマは、この関数を一部の変数値と関数の戻り値を表示するためにのみ使用します。 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 言語コードであると考えられています。 PHP ステートメントとしてのサーバー側のコードが 1 つのファイルに混在しているため、ファイルが非常に大きくなり、プログラムのメンテナンスや再開発に非常に悪影響を及ぼし、大規模なサイトの開発には適していません。一般に、HTML ステートメントと PHP ステートメントを分離するには 2 つの方法があります。
1. 次のような専用 API を作成します。

Index.php?クライアント側




;

;



サイト。リブ?サーバー側コード



$dbh = mysql_connect ("localhost", "sh", "pass")
または die (sprintf ("Cannot MySQL [%s] に接続します: %s",
mysql_errno (), mysql_error ()));
@mysql_select_db ("MainSite")
または die (sprintf ("データベース [%s] を選択できません) ]: %s",
mysql_errno (), mysql_error ()));

$sth = @mysql_query ("SELECT * FROM site", $dbh)
or die (sprintf ("クエリ [%s] を実行できません: %s",
mysql_errno (), mysql_error ()));

$site_info = mysql_fetch_object ($sth);

function print_header ()
{
グローバル $site_info;
print $site_info->
関数 print_body ()
{
グローバル $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
;n";
}
?> このメソッドはプログラムをより単純にします。より速く実行されます。

2. テンプレートを使用する方法
この方法では、プログラムがより簡潔に見え、次のコードも使用できます。


;head>
%%PAGE_TITLE%%

%% PAGE_TITLE%%







プレースホルダーを使用して動的に生成されるコンテンツを置き換えた後、パーサーを使用してテンプレート ファイルを分析し、プレースホルダーを実際のコンテンツに置き換えます。この方法を使用すると、PHP を使用しないページ開発者でもテンプレート ファイルを変更できます。この方法の欠点は、テンプレートファイルを解釈する必要があるため、実行効率が高くないことです。同時に、実装もより複雑になります。

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

5. 古い関数を使用しない
PHP はフリー ソフトウェアとして急速に発展しており、次のような機能の多くは時代遅れです:

一方 (1):
print "5";
if ($idx == 5):
endif;
endwhile;効率的ではなく、将来のバージョンでは無効になり、プログラムが実行できなくなる可能性があります。したがって、常に最新の PHP マニュアルを参照して、どの関数が古くなっているのかを確認し、適時に修正する必要があります。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
%% PAGE_LINKS%% %%PAGE_CONTENT%%