phpマジック変数の使用例の詳細説明、phpマジックの使用例の詳細説明_PHPチュートリアル
- WBOYオリジナル
- 2016-07-13 10:14:111024ブラウズ
PHPマジック変数の使用例の詳細な説明、PHPマジック例の詳細な説明
この記事の例では、php マジック変数の使用法について説明します。そのうちの __DIR__ は php5.3 で新しく追加されたものであり、参考のために皆さんと共有されています。具体的な使用状況の分析は次のとおりです:
システム定数
__FILE__ 現在のファイル名
__LINE__ 現在の行番号
__FUNCTION__ 現在の関数名
__CLASS__ 現在のクラス名
__METHOD__ 現在のオブジェクトのメソッド名
詳細な分析
1. __ファイル__
ファイルのフルパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。
PHP 定数 dirname(__file__)
__FILE__: PHP マジック定数として知られ、現在実行中の PHP スクリプトの絶対パスを含む完全なパスとファイル名を返します
1) dirname(__FILE__) 関数は、スクリプトが配置されているパスを返します。 ネットワークを更新します
たとえば、ファイル b.php には次のコンテンツが含まれています:
コードをコピーします コードは次のとおりです:
$basedir = ディレクトリ名(__FILE__);
$basedir をエコーする
//このファイルが存在する絶対パスがページに出力されます
?>
私が行ったテストの結果は次のとおりでした: E:websiteothertestcms
これは、ASP での server.mappth の使用法と同等です
b.php が a.php ファイルによって参照されている場合は、他のディレクトリに含めるか、必要とします。 変数 $basedir の内容は、b.php が存在するフォルダーへのパスのままです。 a.php ファイルが配置されているディレクトリにはなりません。
2) dirname(__FILE__) は通常、ファイルが配置されている現在のディレクトリからシステムのルート ディレクトリまでのディレクトリ構造を返します。
現在のファイル名は返されません。 dirname(__FILE__) は . (現在のディレクトリ) を返すこともあります [その理由は、b.php ファイルが http.conf または PHP 構成開発環境のデフォルトの WEB ディレクトリにあるためです
コードをコピーします コードは次のとおりです:
/**
頻繁に移動することを心配する必要がないように、パブリック構成ファイルでルート ディレクトリを設定します。
*/
定義('ROOT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
エコー ROOT_PATH;
echo "
";
エコー __FILE__;
echo "
";
echo ディレクトリ名(__FILE__);
echo "
";
echo ディレクトリ名(ディレクトリ名(__FILE__));
?>
2.__LINE__
ファイル内の現在の行番号。この変数は、エラーをデバッグするときに非常に役立ちますが、まったく役に立たない場合もあります。
コードをコピーします コードは次のとおりです:
echo __LINE__ //__LINE__ がある行番号を表示します
?>
3. __クラス__
クラスの名前、PHP5 によって返される結果は大文字と小文字が区別されます
コードをコピーします コードは次のとおりです:
クラスbase_class
{
関数say_a()
{
echo "'a' – " . __CLASS__ .";
}
関数say_b()
{
echo "'b' – get_class($this) "
";
と言いました。
}
}
クラスの派生クラスはベースクラスを拡張します
{
関数say_a()
{
親::say_a();
echo "'a' – " . __CLASS__ .";
}
関数say_b()
{
親::say_b();
echo "'b' – get_class($this) "
";
と言いました。
}
}
$obj_b = 新しい派生クラス();
$obj_b->say_a();
echo "
";
$obj_b->say_b();
?>
結果は次のようになります:
コードをコピーします コードは次のとおりです:
'a' – 基底クラスを言いました
'a' – 派生クラスを言いました
'b' – 派生クラスを言いました
'b' – 派生クラスを言いました
場合によっては、__CLASS__ の代わりに get_class を使用することもできます
4. __機能__と__メソッド__
__FUNCTION__: 関数名、php5 で返される結果は大文字と小文字が区別されます
__METHOD__: メソッド内の関数名。php5 で返される結果は大文字と小文字が区別されます
どちらも取得方法の名前です。違いは何ですか?
コードをコピーします コードは次のとおりです:
クラステスト
{
関数a()
{
エコー __FUNCTION__;
echo "
";
エコー __METHOD__;
}
}
機能は良好です(){
エコー __FUNCTION__;
echo "
";
エコー __METHOD__;
}
$test = 新しいテスト();
$test->a();
echo "
";
良かった();
?>
返される結果:
あ
テスト::a
いいですね
いいですね
分離関数と比較すると、どちらもクラス内のメソッドの場合は関数名を抽出できますが、__FUNCTION__ はクラスのメソッド名だけでなく抽出することもできます。メソッド名
5. __DIR__
ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0の新機能)
5.3 より前のバージョンで __DIR__ を使用したい場合は、次のようにすることができます
コードをコピーします コードは次のとおりです:
if(!define('__DIR__')) {
$iPos = strrpos(__FILE__, "/");
定義("__DIR__", substr(__FILE__, 0, $iPos) . "/");
}
?>
6. __名前空間__
現在の名前空間の名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)
7. __静的__
クラスの静的メソッドを呼び出すと、大文字と小文字が区別されてクラス名が返されます。継承で呼び出された場合は、継承で定義されているかどうかに関係なく、継承されたクラス名を返すことができます。
コードをコピーします コードは次のとおりです:
//php5.3
クラスモデル
{
パブリック静的関数 find()
{
エコー __STATIC__;
}
}
クラス Product はモデルを拡張します {}
クラス ユーザーがモデルを拡張する {}
Product::find() // 「製品」
;
User::find(); // 「ユーザー」
?>
補足: phpのマジックメソッド
__construct() オブジェクトをインスタンス化するとき、オブジェクトのこのメソッドが最初に呼び出されます。
__destruct() このメソッドは、オブジェクトが削除されるとき、またはオブジェクトの操作が終了するときに呼び出されます。
存在しないプロパティを読み取ろうとすると、__get() が呼び出されます。
存在しないプロパティに値を書き込もうとすると、__set() が呼び出されます。
__call() このメソッドは、オブジェクトに存在しないメソッドを呼び出そうとしたときに呼び出されます。
オブジェクトを印刷するときに __toString() が呼び出されます
オブジェクトのクローン作成時に __clone() が呼び出されます
__isset()
__unset()
__autoload($classname)
__睡眠()
__ウェイクアップ()
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/910596.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/910596.html技術記事 php マジック変数の使用例の詳細な説明、php マジック変数の使用例の詳細な説明 この記事では、php5.3 で新しく追加された __DIR__ の使用方法について説明します。参考のために皆さんに共有します。具体的な使い方...