検索
ホームページバックエンド開発PHPチュートリアル経験の共有: PHP 開発者が半分の労力で 2 倍の結果を得るためのヒント_PHP チュートリアル

経験の共有: PHP 開発者が半分の労力で 2 倍の結果を得るためのヒント_PHP チュートリアル

Jul 20, 2016 am 10:57 AM
php半分の労力で2倍の結果を得る使用共有起こる大きい開発者スキル経験

大きな鏡をサーフボードとして使用するとどうなりますか? もしかしたら、より短い時間で波を征服できるかもしれませんが、これがサーフィンにとって正しい選択ではないことは間違いなく心の底ではわかっています。少し奇妙に聞こえるかもしれませんが、同じことが PHP プログラミングにも当てはまります。週末だけで PHP を学ぼうとする人たちの話をよく聞きますが、私の意見では、これはこのプログラミング言語を学ぶには非常に不十分な方法です。

PHP を学習するプロセスは他の言語となぜ違うのですか?

その性質上、PHP 言語で「物事を行う」方法をマスターすれば、それを快適に使用できるようになるので、価値があります。これらの方法を理解することに努めてください。 PHP では、単に自分のアイデアに従って問題を解決するのは、多くの場合、間違ったアプローチです。これはあなたが悪いプログラマーだからではなく、保守しやすい優れたコードを書きたい場合に使用しなければならない標準的なテクニックがいくつかあるからです。知っておくべきトップ 10 のヒントを見てみましょう。

1. Web サイトのインデックス ページを正しく作成する方法

Web サイトを作成するとき、最初に行うことの 1 つは、Web サイトのインデックス ページを作成することです。 PHP を初めて使用する場合、インデックス ページを作成するときの一般的なアプローチは、インデックス ページに必要なコンテンツのみをプログラムし、他のリンク用に別のページを作成することです。ただし、PHP プログラミングを実装するより効率的な方法を学びたい場合は、多くの Web サイトで使用されている「index.php?page=home」モードを使用できます。

2. Request Global Array を使用してデータをキャプチャします

実際、値をキャプチャするために $_GET 配列と $_POST 配列を使用する理由はありません。グローバル配列 $_REQUEST を使用すると、get または form リクエストを取得できます。したがって、ほとんどの場合、データを解析するためのより効率的なコードは次のとおりです:

<ol class="dp-c"><li class="alt"><span><span>01.</span><span class="vars">$action</span><span> = isset(</span><span class="vars">$_REQUEST</span><span>[</span><span class="string">'action'</span><span>]) ? </span><span class="vars">$_REQUEST</span><span>[</span><span class="string">'action'</span><span>] : 0; </span></span></li></ol>

3. PHP コードのデバッグには var_dump を使用します

PHP デバッグ テクノロジを探している場合は、var_dump を使用する必要があると言わざるを得ません。あなたが探している目標。このコマンドは、php 情報の表示に関するすべてのニーズを満たすことができます。コードのデバッグのほとんどのケースは、PHP での値の取得に関連しています。

4. PHP はコードロジックを処理し、Smarty はプレゼンテーション層を処理します

Smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンであり、現在業界で最も有名な PHP テンプレート エンジンの 1 つです。論理コードと外部コンテンツを分離し、元々 HTML コードと混在していた PHP コード ロジックを分離する、管理と使用が簡単な方法を提供します。

簡単に言えば、その目的は、PHP プログラマーをフロントエンド担当者から分離し、プログラマーがフロントエンド担当者のページ設計に影響を与えることなくプログラムの論理コンテンツを変更し、フロントエンド担当者が影響を与えずにページを再変更できるようにすることです。プログラムのプログラム ロジック これは、複数人でのコラボレーション プロジェクトでは特に重要です。

5. 本当にグローバル値を使用する必要がある場合は、構成ファイルを作成します

グローバル値を頻繁に作成するのは悪い習慣ですが、実際の状況ではこれが必要になる場合があります。データベース テーブルまたはデータベース接続情報にはグローバル値を使用することをお勧めしますが、PHP コードではグローバル値を頻繁に使用しないでください。あるいは、グローバル変数を config.php ファイルに保存する方が良い方法です。

6. 定義されていない場合、アクセスは禁止されます。

ページを正しく作成した場合、他の人がindex.php または home.php の外にアクセスする理由はありません。 Index.phpにアクセスしたら、変数を取得することで必要なページを開くことができます。インデックス ページには次のようなコードが含まれている必要があります:

<ol class="dp-c"><li class="alt"><span><span>define(</span><span class="string">'yourPage'</span><span>,1); </span></span></li></ol>

次に、他のページには次のコードが含まれている必要があります:

<ol class="dp-c"><li class="alt"><span><span class="keyword">if</span><span> (!defined(</span><span class="string">'yourPage'</span><span>)) </span><span class="keyword">die</span><span>(</span><span class="string">'Access Denied'</span><span>); </span></span></li></ol>

これの目的は、他の php ページへの直接アクセスを防ぐことです。このようにして、index.php を経由せずに他の Web ページにアクセスしようとすると、「アクセスが拒否されました」というメッセージが表示されます。

7. データベース クラスを作成する

データベース プログラミング (PHP では非常に一般的なタスク) を行っている場合は、データベース管理関数を処理するデータベース クラスを作成することをお勧めします。サンプルコードは以下の通りです。

<ol class="dp-c">
<li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">function</span><span> dbExec(</span><span class="vars">$query</span><span>)  </span></span></li>
<li><span>{  </span></li>
<li class="alt">
<span class="vars">$result</span><span> = </span><span class="vars">$this</span><span>->db-></span><span class="func">exec</span><span>(</span><span class="vars">$query</span><span>);  </span>
</li>
<li>
<span class="keyword">if</span><span> (PEAR::isError(</span><span class="vars">$result</span><span>))  </span>
</li>
<li class="alt">
<span>errorRedirect(</span><span class="vars">$result</span><span>->getMessage(), true);  </span>
</li>
<li>
<span class="keyword">else</span><span> </span>
</li>
<li class="alt">
<span class="keyword">return</span><span> </span><span class="vars">$result</span><span>;  </span>
</li>
<li><span>} </span></li>
</ol>

この関数はクエリ文を受け取って実行するだけです。発生する可能性のあるエラーも処理します。ここに監査コードを含めることもできますが、私は同様の監査関数を使用することを好みます:

<ol class="dp-c">
<li class="alt"><span><span>01.</span><span class="comment">// checks if arguments given are integer values not less than 0 - has multiple arguments </span><span> </span></span></li>
<li>
<span class="keyword">function</span><span> sanitizeInput()  </span>
</li>
<li class="alt"><span>{  </span></li>
<li>
<span class="vars">$numargs</span><span> = func_num_args();  </span>
</li>
<li class="alt">
<span class="vars">$arg_list</span><span> = func_get_args();  </span>
</li>
<li>
<span class="keyword">for</span><span> (</span><span class="vars">$i</span><span> = 0; </span><span class="vars">$i</span><span> <span class="vars">$numargs</span><span>; </span><span class="vars">$i</span><span>++) {  </span></span>
</li>
<li class="alt">
<span class="keyword">if</span><span> (!</span><span class="func">is_numeric</span><span>(</span><span class="vars">$arg_list</span><span>[</span><span class="vars">$i</span><span>]) || </span><span class="vars">$arg_list</span><span>[</span><span class="vars">$i</span><span>] </span>
</li>
<li>
<span>errorRedirect(</span><span class="string">"Unexpected variable value"</span><span>, true);  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>} </span></li>
</ol>

8. 入力を処理するための 1 つの php ファイルと、特定の関数を処理するための 1 つの class.php ファイル

コードが乱雑になっている 重要な方法は、ユーザー入力を取得した後、それを他の関数にリダイレクトして処理することです。原理は非常に単純で、php ファイルは必要な入力をすべて受け取り、その実行をクラス ファイル内の関数にリダイレクトします。たとえば、「index.php?page=profile&action=display」のような URL があるとします。 URL は profile.php によって取得され、アクションは「表示」です。次に、単純なスイッチ関数を使用して、実際の表示関数を実行します。

<ol class="dp-c">
<li class="alt"><span><span class="keyword">require_once</span><span> PROJECTROOT.</span><span class="string">'libs/messages.class.php'</span><span>;  </span></span></li>
<li>
<span class="vars">$message</span><span> = </span><span class="keyword">new</span><span> Message();  </span>
</li>
<li class="alt">
<span class="keyword">switch</span><span> (</span><span class="vars">$action</span><span>)  </span>
</li>
<li><span>{  </span></li>
<li class="alt">
<span class="keyword">case</span><span> </span><span class="string">'display'</span><span>:  </span>
</li>
<li>
<span class="vars">$message</span><span>->display();  </span>
</li>
<li class="alt">
<span class="keyword">break</span><span>;  </span>
</li>
<li><span>... </span></li>
</ol>

上に示すように、メッセージ クラスを使用して、スイッチ チェックを開始します。 $message は、クラス内の関数を呼び出すことによって使用される単なるオブジェクトです。

9、了解你的SQL语句,并总是对其审查(Sanitize)

正如我以前所提到的,任何php网站中最重要的部分有99%的可能是数据库。因此,你需要非常熟悉如何正确的使用sql。学会关联表和更多高级技术。下面我将展示一个使用MySQL的函数示例,并使用本文第7条函数进行审查。

<ol class="dp-c">
<li class="alt"><span><span class="keyword">private</span><span> </span><span class="keyword">function</span><span> getSentMessages(</span><span class="vars">$id</span><span>)  </span></span></li>
<li><span>{  </span></li>
<li class="alt">
<span class="vars">$this</span><span>->util->sanitizeInput(</span><span class="vars">$id</span><span>);  </span>
</li>
<li>
<span class="vars">$pm_table</span><span> = </span><span class="vars">$GLOBALS</span><span>[</span><span class="string">'config'</span><span>][</span><span class="string">'privateMsg'</span><span>];  </span>
</li>
<li class="alt">
<span class="vars">$users</span><span> = </span><span class="vars">$GLOBALS</span><span>[</span><span class="string">'config'</span><span>][</span><span class="string">'users'</span><span>];  </span>
</li>
<li>
<span class="vars">$sql</span><span> = "SELECT PM.*, USR.username </span><span class="keyword">as</span><span> name_sender FROM </span><span class="vars">$pm_table</span><span> PM, </span><span class="vars">$users</span><span> USR  </span>
</li>
<li class="alt">
<span>WHERE id_sender = </span><span class="string">'$id'</span><span> AND sender_purge = FALSE AND USR.id = PM.id_receiver AND is_read = TRUE  </span>
</li>
<li><span>ORDER BY date_sent DESC";  </span></li>
<li class="alt">
<span class="vars">$result</span><span> = </span><span class="vars">$this</span><span>->dbQueryAll(</span><span class="vars">$sql</span><span>);  </span>
</li>
<li>
<span class="keyword">return</span><span> </span><span class="vars">$result</span><span>;  </span>
</li>
<li class="alt"><span>} </span></li>
</ol>

首先,我们对用户输入进行检查(通过一个GET变量传递消息id),然后我们执行我们的SQL命令。注意这儿SQL的用法。你需要了解如何使用别名和关联表。

10、当你只需要一个对象时,使用单例模式

在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:

<ol class="dp-c">
<li class="alt"><span><span class="keyword">function</span><span> smartyObject()  </span></span></li>
<li><span>{  </span></li>
<li class="alt">
<span class="keyword">if</span><span> (</span><span class="vars">$GLOBALS</span><span>[</span><span class="string">'config'</span><span>][</span><span class="string">'SmartyObj'</span><span>] == 0)  </span>
</li>
<li><span>{  </span></li>
<li class="alt">
<span class="vars">$smarty</span><span> = </span><span class="keyword">new</span><span> SmartyGame();  </span>
</li>
<li>
<span class="vars">$GLOBALS</span><span>[</span><span class="string">'config'</span><span>][</span><span class="string">'SmartyObj'</span><span>] = </span><span class="vars">$smarty</span><span>;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li>
<span class="keyword">else</span><span> </span>
</li>
<li class="alt">
<span class="vars">$smarty</span><span> = </span><span class="vars">$GLOBALS</span><span>[</span><span class="string">'config'</span><span>][</span><span class="string">'SmartyObj'</span><span>];  </span>
</li>
<li>
<span class="keyword">return</span><span> </span><span class="vars">$smarty</span><span>;  </span>
</li>
<li class="alt"><span>} </span></li>
</ol>

注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对象。否则,它意味着该对象已经被创建,我们只需要返回它。

希望本文的介绍,能够给你带来帮助。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445759.htmlTechArticle如果你使用一面大镜子作为冲浪板会发生什么?或许你会在较短的时间内征服海浪,但是你肯定从内心深处明白,这不是冲浪的正确选择。同...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?May 08, 2025 am 12:08 AM

tooptimizephpapplicationsforporformance、usecaching、databaseoptimization、opcodecaching、andserverconfiguration.1)cachingwithedatedatedatafethtimes.2)最適化バイズビーインデキシング、readedandandandwriteoperations.3)

PHPの依存噴射とは何ですか?PHPの依存噴射とは何ですか?May 07, 2025 pm 03:09 PM

依存関係の依存性、テスト可能性、および維持可能性の依存性の依存性の依存性、および維持可能性は、エクステルンド依存性を維持する可能性があります

最高のPHPパフォーマンス最適化手法最高のPHPパフォーマンス最適化手法May 07, 2025 pm 03:05 PM

PHPパフォーマンスの最適化は、次の手順を通じて実現できます。1)スクリプトの上部にrequire_onceまたはinclude_onceを使用して、ファイルの負荷数を減らすことができます。 2)プリプロセシングステートメントとバッチ処理を使用して、データベースクエリの数を減らします。 3)OpCodeキャッシュのOpCacheを構成します。 4)PHP-FPM最適化プロセス管理を有効にして構成します。 5)CDNを使用して静的リソースを配布します。 6)コードパフォーマンス分析には、XdebugまたはBlackfireを使用します。 7)配列などの効率的なデータ構造を選択します。 8)最適化実行のためのモジュラーコードを記述します。

PHPパフォーマンスの最適化:OpCodeキャッシングの使用PHPパフォーマンスの最適化:OpCodeキャッシングの使用May 07, 2025 pm 02:49 PM

opcodeCachingsificlyprovesppherformanceBycachingCompiledCode、reducingServerloadandResponsetimes.1)itStoresPhpCodeInMemory、バイパス補助補強団体

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。