ホームページ >バックエンド開発 >PHPチュートリアル >傭兵王の女社長のPHPマスターへの道のり(1)
PHP は効率的なネットワーク プログラミング言語であり、柔軟な記述と高速な実行という利点により、すぐに Web プログラマーに好まれる言語になりました。少し前の権威ある調査によると、現在、Web サイトの 31.6% が主要なサーバー側プログラミング言語として PHP を使用しています。
ただし、PHP プログラミングのマスターになるのは簡単ではありません。多くの人が想像しているほどではありません。複雑な問題を解決するための簡単なコードをいくつか書くことができれば、あなたは PHP プログラミングのマスターです。真の PHP マスターには、他の多くの問題も考慮する必要があります。次の 3 つのガイドラインは、成熟した PHP プログラマーがプログラミングにおいて最初に従うべきガイドラインです。
1. 怠惰は金です
2. 美しいコードを書きます
3. プログラミングの速度ではなく、プログラミングの速度を追求します
1. 怠惰は金です
あなたは怠惰なプログラマーですか?このアイデアはとても奇妙です!なぜなら、おそらく世界で最も忙しい人々はコンピュータープログラマーだからです。しかし、プログラマは忙しすぎるからこそ、プログラミングする際に怠けることを学ぶ必要があります。
プログラマーの場合、怠惰な方法が 2 つあります。1 つは、他の人の既成のプログラム コードを大胆に使用し、それらのコードを自分のプログラムまたはプロジェクトに統合することです。 2 つ目は、関数ライブラリを構築するための便利なコードを作成することです。これにより、将来プログラムを作成するときに簡単に使用できるようになり、必然的に面倒な作業が軽減されます。
これら 2 つの遅延メソッドは、PHP プログラマーに非常に適しています。
まず第一に、PHP は自由でオープンな環境で生まれ、成長した言語です。世界中には、PHP の完成度を目指して絶えず努力しているプログラマーが何千人もいます。また、彼らは自分の創意工夫や自分が書いたコードを他の人と共有することにも意欲を持っています。 PHP の Web サイト、メーリング リスト、ニュース グループからは、毎日多くの優れたプログラム コードを見つけることができます。これを言っても、他の人がコードを書いてくれるのを一日中待つことをお勧めするわけではありませんが、「偉人の肩の上に乗って」、他の人のプログラム コードをスマートに適用することは可能です。多くの時間を節約できます。次に、PHP では独自の関数ライブラリを簡単に構築できるため、将来プログラムを作成する際に多くの手間を省くことができます。
以下の著者は、いくつかの一般的な関数を紹介します。これらの関数の一部はインターネット上のオープン ソース プロジェクトからのものであり、一部はメーリング リストから選択されたものです。それらを自分のライブラリに追加できれば、遅かれ早かれその恩恵を受けることになるでしょう。
1. 汎用的なデータベース処理機能
他の CGI 機能と比較して、PHP の利点の 1 つは、非常に強力なデータベース処理機能を備えていることです。しかし、PHP では、さまざまなデータベースを処理するためにいくつかの特殊な関数が使用されており、一般的なデータベース処理関数が不足しています。これにより、プログラム コードの移植性が大幅に低下し、プログラミング初心者の友人にも多大な不便をもたらします。
インターネットでは、多くのプログラマーがクラスをカプセル化することでこの問題を解決しました。彼らは、Linux の世界で人気のある Mysql であっても、Windows プラットフォームで広く普及している SqlServer であっても、あらゆる一般的なデータベースを処理するための統合関数を作成しました。個人的には、これらの関数をとても気に入っています。使用しているデータベースを考慮するだけでなく、データベース接続やデータベース ハンドルなどの複雑なことを考慮することなく、「query」や「next_record」などの単純な関数を直接使用できるからです。 。
これらの関数が必要な場合は、次の URL にアクセスして入手できます:
http://phplib.netuse.de/
http://phpclasses.UpperDesign.com/browse.html/package/20
http :/ /phpdb.linuxbox.com/
2. 変数デバッグ機能
PHP プログラムのデバッグは、VB などの高級言語のような統合されたコンパイルとデバッグ環境を持たず、Perl のようなものでもありません。 Linux または DOS 環境で直接実行できます。実際、echo ステートメントを柔軟に使用することで、PHP のデバッグを完了できます。
次の関数を使用すると、プログラム内の変数の型と値をいつでも確認できます。
function ss_array_as_string (&$array, $column = 0) {
$str = "Array(
n";
while(list($var, $val) = each($array)){
for ($i = 0; $i $str .= $var.= ss_as_string ($val, $column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
return $str.);
}
function ss_object_as_string (&$object, $column = 0) {
if (empty($object->classname)) {
return "$object";
}
else {
$str = $object->classname."(
n";
while (list(,$var) = each($object->persistent_slots)) {
for ($i = 0) ; $i < $i++){
$str .= "&nbsp;&nbsp;&nbsp;";
グローバル $$var .= $var; ;
$str .= ss_as_string($$var, column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp ;&nbsp;";
}
return $str.);
}
}
function ss_as_string (&$thing, $column = 0) {
if (is_object($thing)) {
return ss_object_as_string($thing, $column);
}
elseif (is_array($thing)) {
return ss_array_as_string($thing, $column);
}
elseif (is_double($thing)) {
return "Double(".$thing.")";
}
elseif (is_long($thing)) {
return "Long(".$thing.")";
}
elseif (is_string($thing)) {
return "String(".$thing.")";
}
else {
return "Unknown(".$thing.")";
}
}
必要なときに、プログラム内で使用される次の 1 条コードをすぐに追加します。
次の句を使用すると、プログラム内のすべての量の値を直接見ることができます:
echo ss_as_string($GLOBALS);
3. ログ情報を制御する機能
ログ情報の表示内容だけでなく、PHP プログラムを調整するもう 1 つの重要な方法は、ログ情報を表示することです。この機能は、次の関数で簡単に実行できます。
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
NONE => 0,
ERROR => 1,
INFO => 2,
DEBUG => 3);
function ss_log_set_level ($level = ERROR) {
global $ss_log_level;
$ss_log_level = $レベル;
}
function ss_log ($level, $message) {
global $ss_log_level, $ss-log-filename;
if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
// 不显表示Log情報
return false;
}
$fd = fopen($ss_log_filename, "a+");
fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
fclose($fd);
true を返します。
}
function ss_log_reset () {
グローバル $ss_log_filename;
@unlink($ss_log_filename);
}
上の関数には 4 つの Log レベルの変化量があります。 PHP プログラムの実行中、Log のレベルが事前に設定されたレベルより低い場合に限り、ログ情報を記録および表示できます。次のような一条の句を追加します:
ss_log_set_level(INFO);ただし、PHP プログラムの実行中、ERROR および INFO レベルのログ情報のみが表示および表示されず、DEBUG レベルの情報は省略されます。さらに、表示される情報の内容も次のように設定できます。
ss_log(ERROR, "テスト レベル ERROR");
ss_log(DEBUG, "テスト レベル"); DEBUG");
次のステートメントを使用していつでもログ情報をクリアすることもできます:
ss_log_reset();
4. 速度テスト関数
コードを最適化するには、コードをテストできるメソッドが必要です最適な優れたコードを選択するための実行時間。次の関数は、コードの実行に必要な時間をテストできます。
function ss_timing_start ($name = default) {
global $ss_timing_start_times[$name] =explode( , microtime()); ss_timing_stop ( $ name = デフォルト) {
グローバル $ss_timing_stop_times;
$ss_timing_stop_times[$name] =explode(, microtime())
}
関数 ss_timing_current ($name = デフォルト) {
グローバル $ss_timing_start_times, $ ss_timing_stop_times; if (! isset($ss_timing_start_times[$name])) {
return 0; }
if (!isset($ss_timing_stop_times[$name])) {
$stop_time =explode(, microtime()); else {
$stop_time = $ss_timing_stop_times[$name] }
$current = $stop_time[1] - $ss_timing_start_times[$name][1];
$current += $stop_time[0] - $ss_timing_開始時間[ $name][ 0];
return $current; }
これで、複数のタイマーを同時に使用することもできます。上記のタイマーの名前で十分です。
5. データベース操作のデバッグと最適化
データベースにとって、実行速度は非常に重要です。データベースを迅速に実行する方法を説明する書籍や記事は数多くありますが、すべての方法は実際にテストする必要があります。次に、PHPLib 関数ライブラリの query() 関数と上記で紹介した関数を組み合わせて、新しい query() 関数を作成します。元の関数と比較して、この関数は実行時間監視関数を追加します。
function query($Query_String, $halt_on_error = 1) {
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String, $this->Link_ID) ;
ss_timing_stop();
ss_log(INFO, ss_timing_current().Secs - .$Query_String);
$this−>Errno = mysql_errno(); = mysql_error();
if ($halt_on_error && !$this->Query_ID) {
$this->halt("無効な SQL: ".$Query_String) }
return $this->Query_ID; }(つづく)
以上、傭兵王女社長の個人マスターを含めたPHPマスターへの道(1)をご紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。