この記事では主にPHPのマジック定数(変数)、マジックメソッド(関数)、スーパーグローバル変数の紹介をしています。ある参考値がありますので、共有します。困っている友達は参考にしてください
1. マジック定数 (マジック変数)
概念: いわゆるマジック定数は、PHP によって事前に定義されている定数です。場所により異なります。
1. __LINE__ ファイル内の現在の行番号を取得します。
2. __FILE__ ファイルの完全なパスとファイル名を取得します。
3. __DIR__ ファイルが存在するディレクトリを取得します。
4. __FUNCTION__ 関数名を取得します (PHP 4.3.0 で新しく追加されました)。
5. __CLASS__ クラスの名前を取得します (PHP 4.3.0 で新しく追加されました)。
6. __METHOD__ クラスのメソッド名を取得します (PHP 5.0.0 で新しく追加されました)。
7. __NAMESPACE__ 現在のネームスペースの名前 (大文字と小文字が区別されます)。
8. __TRAIT__ Trait の名前 (PHP 5.4.0 で新しく追加されました)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されているスコープが含まれます (例: Foo\Bar)。
#2. スーパーグローバル変数 (9)
1, $GLOBALS: 変数をグローバル スコープに格納します。
2, $_SERVER : サーバー関連を取得します。情報
3, $_REQUEST: POSTおよびGETリクエストのパラメータを取得します##4, $_POST: フォームのPOSTリクエストパラメータを取得します##5, $_GET: フォームのGETリクエストパラメータを取得します
6. $_FILES: アップロードされたファイルの変数を取得します
7. $_ENV: サーバー側の環境変数の配列を取得します
8. $_COOKIE: ブラウザーの cookie を取得します
Set cookie:setcookie(name, value, Expire, path, domain);
Get cookie:$_COOKIE["user"];
Cookie の削除: setcookie(“user”, “”, time()-3600);//有効期限の設定
##9, $_SESSION: セッションの取得
サーバー側のセッション操作
session を使用する前に必ず session_start() を開始してください セッションの保存: $_SESSION['name']=”leixuesong”;//配列操作
セッションの破棄: unset($_SESSION['views']);//1 つ破棄
session_destroy() と unset($_SESSION);//すべてのセッションを破棄します
##3. マジック メソッド (マジック関数)##コンセプト: PHP では、__ (アンダースコア 2 つ) で終わるすべての項目が次のようになります。魔法のメソッドとして予約されています。したがって、上記のマジック メソッドを除き、クラス メソッドを定義する場合は、先頭に __ を付けないことをお勧めします。 は、__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__isset()、__unset ( )、__sleep()、__wakeup()、__toString()、__invoke()、__set_state()、__clone()、__debugInfo() は、PHP では「Magic メソッド」と呼ばれます。マジック機能を使用しない限り、独自のクラス メソッドに名前を付けるときにこれらのメソッド名を使用することはできません。 1. __construct() コンストラクター: このメソッドは、新しいオブジェクト (インスタンス化されたオブジェクト) が作成されるたびに最初に呼び出されるため、前に実行するのに非常に適しています。オブジェクトを使用して、いくつかの初期化作業が行われます。 アプリケーションノート: コンストラクターがサブクラスで定義されている場合、その親クラスのコンストラクターは暗黙的に呼び出されません。親クラスのコンストラクターを実行するには、サブクラスのコンストラクターで parent::__construct() を呼び出す必要があります。サブクラスでコンストラクターが定義されていない場合、通常のクラス メソッドと同様に親クラスから継承されます (プライベートとして定義されていない場合)。 アプリケーション例: <?php
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}class OtherSubClass extends BaseClass { // inherits BaseClass's constructor}// In BaseClass constructor$obj = new BaseClass();// In BaseClass constructor
// In SubClass constructor$obj = new SubClass();// In BaseClass constructor$obj = new OtherSubClass();
?>
2. __destruct() デストラクター: デストラクターは、次の場合にすべての参照が削除または実行されます。オブジェクトは明示的に破棄されます。
#コンストラクターと同様、親クラスのデストラクターはエンジンによって秘密裏に呼び出されません。親クラスのデストラクターを実行するには、子クラスのデストラクター本体でparent::__destruct() を明示的に呼び出す必要があります。さらに、コンストラクターと同様に、サブクラスは、デストラクターが定義されていない場合、親クラスを継承します。
デストラクターは、exit() を使用してスクリプトの実行が終了した場合でも呼び出されます。デストラクターで exit() を呼び出すと、残りのシャットダウン操作が中止されます。
アプリケーション ノート:
1. スクリプトが閉じられると、デストラクターが呼び出されます。 , この時点で、すべてのHTTPヘッダーが送信されました。スクリプトを閉じたときの作業ディレクトリは、SAPI (Apache など) 内にあるときとは異なる可能性があります。
2. デストラクター (スクリプトの終了時に呼び出される) で例外をスローしようとすると、致命的なエラーが発生します。
アプリケーション例:
<?phpclass A { function __construct() { $a = func_get_args(); $i = func_num_args(); if (method_exists($this,$f='__construct'.$i)) { call_user_func_array(array($this,$f),$a); } } function __construct1($a1) { echo('__construct with 1 param called: '.$a1.PHP_EOL); } function __construct2($a1,$a2) { echo('__construct with 2 params called: '.$a1.','.$a2.PHP_EOL); } function __construct3($a1,$a2,$a3) { echo('__construct with 3 params called: '.$a1.','.$a2.','.$a3.PHP_EOL); } }$o = new A('sheep'); $o = new A('sheep','cat'); $o = new A('sheep','cat','dog');// results: // __construct with 1 param called: sheep // __construct with 2 params called: sheep,cat // __construct with 3 params called: sheep,cat,dog ?>3,
__call(): オブジェクト内でアクセスできないメソッドが呼び出された場合、__call() が呼び出されます。
public mixed __call ( string $name ,
array $arguments )
<?phpclass MethodTest { public function __call($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** PHP 5.3.0之后版本 */ public static function __callStatic($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } }$obj = new MethodTest;$obj->runTest('in object context'); MethodTest::runTest('in static context'); // PHP 5.3.0之后版本 ?>
4, __callStatic(): __callStatic() は、アクセスできないメソッドが静的コンテキストで呼び出されたときに呼び出されます。
5, __set(): 代入時に与えるアクセスできないプロパティに値を設定すると、__set() が呼び出されます。
6、__get(): いつ読み取られますかプロパティの値にアクセスできない場合は、__get() が呼び出されます。
7、__isset() : 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。
8、__unset() : 当对不可访问属性调用 unset() 时,__unset() 会被调用。
9、__sleep() :方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。
serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL
被序列化,并产生一个 E_NOTICE
级别的错误。与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
10、__wakeup() :经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
应用范例:
<?php class Connection { protected $link; private $server, $username, $password, $db; public function __construct($server, $username, $password, $db) { $this->server = $server; $this->username = $username; $this->password = $password; $this->db = $db; $this->connect(); } private function connect() { $this->link = mysql_connect($this->server, $this->username, $this->password); mysql_select_db($this->db, $this->link); } public function __sleep() { return array('server', 'username', 'password', 'db'); } public function __wakeup() { $this->connect(); } } ?>
11、__toString() :__toString() 方法用于一个类被当成字符串时回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR
级别的致命错误。
<?php// Declare a simple classclass TestClass { public $foo; public function __construct($foo) { $this->foo = $foo; } public function __toString() { return $this->foo; } }$class = new TestClass('Hello');echo $class; //输出 Hello ?>
11、__invoke() :当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。(本特性只在 PHP 5.3.0 及以上版本有效)
<?phpclass CallableClass { function __invoke($x) { var_dump($x); } } $obj = new CallableClass;$obj(5); var_dump(is_callable($obj)); // is_callable — 检测参数是否为合法的可调用结构
?>以上会输出: int(5) bool(true)
12、__set_state() :自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。
应用范例:
<?phpclass A { public $var1; public $var2; public static function __set_state($an_array) // As of PHP 5.1.0 { $obj = new A; $obj->var1 = $an_array['var1']; $obj->var2 = $an_array['var2']; return $obj; } }$a = new A; $a->var1 = 5;$a->var2 = 'foo'; eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( // 'var1' => 5, // 'var2' => 'foo', // ));var_dump($b); ?>以上例程会输出:object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo"}
13、__clone():对象复制。当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)
应用范例:
<?php class SubObject { static $instances = 0; public $instance; public function __construct() { $this->instance = ++self::$instances; } public function __clone() { $this->instance = ++self::$instances; } }class MyCloneable { public $object1; public $object2; function __clone() { // 强制复制一份this->object, 否则仍然指向同一个对象 $this->object1 = clone $this->object1; } }$obj = new MyCloneable(); $obj->object1 = new SubObject(); $obj->object2 = new SubObject(); $obj2 = clone $obj; print("Original Object:\n"); print_r($obj); print("Cloned Object:\n"); print_r($obj2); ?> 以上例程会输出: Original Object:MyCloneable Object( [object1] => SubObject Object ( [instance] => 1 ) [object2] => SubObject Object ( [instance] => 2 ) ) Cloned Object:MyCloneable Object( [object1] => SubObject Object ( [instance] => 3 ) [object2] => SubObject Object ( [instance] => 2 ) )
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上がPHP のマジック定数 (変数)、マジック メソッド (関数)、およびスーパーグローバル変数の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
