関数と混同されやすい PHP 5.4.10 の言語構造のリストを投稿します
ここでは、混同されやすいものの一部のみを示します。言語構造はたくさんあるので、すべてを列挙する必要はありませんし、マニュアルを一つ一つ確認するのは面倒です。実際、zend_ language_scanner.l に定義がある限り、それは言語構造です。 if、for、class、function、global などの演算子 (PHP の開始タグと終了タグ を含む) およびこれらの演算子はすべて言語構造です。
多くの人は、次のものが関数であると誤解しています:
終了
死ぬ
戻る
エコー
印刷
評価
__halt_compiler
を含む
include_once
必要です
require_once
セット
空
設定を解除
リスト
また、言語構造の一部である特別な定数もいくつかありますが、それらは実行時に現在の環境に従って特別に処理され、その値はローカルでのみ意味があり、グローバルでは意味がありません。
__クラス__
__TRAIT__
__機能__
__方法__
__LINE__
__ファイル__
__DIR__
__名前空間__
これらの特別な定数は実行時にバインドされます。例として __CLASS__ のバインド コードは次のとおりです。
<ST_IN_SCRIPTING>"__CLASS__" {<br /> const char *class_name = NULL;<br /> <br /> if (CG(active_class_entry)<br /> && (ZEND_ACC_TRAIT ==<br /> (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) {<br /> /* We create a special __CLASS__ constant that is going to be resolved<br /> at run-time */<br /> zendlval->value.str.len = sizeof("__CLASS__")-1;<br /> zendlval->value.str.val = estrndup("__CLASS__", zendlval->value.str.len);<br /> zendlval->type = IS_CONSTANT;<br /> } else {<br /> if (CG(active_class_entry)) {<br /> class_name = CG(active_class_entry)->name;<br /> }<br /> <br /> if (!class_name) {<br /> class_name = "";<br /> }<br /> <br /> zendlval->value.str.len = strlen(class_name);<br /> zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len);<br /> zendlval->type = IS_STRING;<br /> }<br /> return T_CLASS_C;<br /> }
__CLASS__ が初めて呼び出されるとき、名前、名前の長さ、値、タイプなど、現在の関連情報が zendval 構造体にロードされます。
コメントが表示されます: 実行時に解決される特別な __CLASS__ 定数を作成します
ただし、最初にそれを呼び出したクラスにのみバインドされ、それを継承するサブクラスは再度バインドされないことに注意してください。クラス a を作成し、その中でメソッド foo を定義し、特殊な定数 __CLASS__ を呼び出し、クラス a を継承してそのメソッドを継承するクラス b を作成すると、サブクラスから foo を呼び出すと、取得したものが親になります。クラス a の名前であり、サブクラスではありません。初期の解釈言語のほとんどはこれを処理していましたが、私は現在呼び出されているクラスに基づいて動的に再バインドする Ruby を試してみました。したがって、取得されるのはクラス b の名前です。 Pythonを試したことがないので、どう対処すればよいのかわかりません。
さらに、言語の構造と関数の間には他にも 2 つの違いがあります:
1 戻り値はありません。
2 一部の言語構造は、パラメーターを受け取るときに括弧で囲む必要はありません (すべてではありません)。たとえば、「/home/angryfrog/library/my_class.php」を含めることができます。 die と exit の後には何も必要ありません。パラメータは括弧なしで使用することもできます。ただし、eval、isset、および unset には依然として括弧が必要です。
-----解決策---------共有してくれてありがとう..
について知る------解決策-------------------------------- include には戻り値がありませんか?
いつ変更されましたか?

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。

この記事では、PHPについて説明し、その完全なフォーム、Web開発での主要な使用、PythonとJavaとの比較、および初心者の学習のしやすさについて説明します。

PHPは、$ \ _ postおよび$ \ _を使用してフォームデータを処理し、検証、消毒、安全なデータベースインタラクションを通じてセキュリティを確保します。

この記事では、PHPとASP.NETを比較して、大規模なWebアプリケーション、パフォーマンスの違い、セキュリティ機能への適合性に焦点を当てています。どちらも大規模なプロジェクトでは実行可能ですが、PHPはオープンソースであり、プラットフォームに依存しませんが、ASP.NET、

PHPの症例感度は変化します:関数は鈍感であり、変数とクラスは感度があります。ベストプラクティスには、一貫した命名と、比較のためにケース非感受性関数を使用することが含まれます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

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

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

ホットトピック









