ホームページ  >  記事  >  バックエンド開発  >  PHP トリック定数

PHP トリック定数

WBOY
WBOYオリジナル
2016-06-13 13:18:15825ブラウズ

PHP マジック定数

1,__FILE__

ファイルの絶対パスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__? には常に絶対パス (またはシンボリック リンクの場合は解決された絶対パス) が含まれますが、以前のバージョンでは相対パスが含まれる場合がありました。
この変数は私が最もよく使うものであり、おそらく誰もが最もよく使うものです。

Web サーバーはすべて documentroot を指定しますが、サーバーごとに documentroot 設定が異なる場合があります。この場合、パスが異なるため、Web サイトを別のサーバーに移動することができます。

<?php  
/** 
在你的公用的配置文件中,来设置你的根目录,这样就不用担心经常搬家了。 
*/  
define('ROOT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);  
echo ROOT_PATH;  
echo "<br>";  
echo __FILE__;  
echo "<br>";  
echo dirname(__FILE__);  
echo "<br>";  
echo dirname(dirname(__FILE__));  
?>  
?2、__LINE__

ファイル内の現在の行番号。

<?php  
echo __LINE__;  //显示,__LINE__所在的行号  
?> 
?3,__CLASS__

クラスの名前、PHP5 によって返される結果は大文字と小文字が区別されます

<?php  
class base_class  
{  
 function say_a()  
 {  
 echo "'a' - said the " . __CLASS__ . "<br/>";  
 }  
 function say_b()  
 {  
 echo "'b' - said the " . get_class($this) . "<br/>";  
 }  
}  
  
class derived_class extends base_class  
{  
 function say_a()  
 {  
 parent::say_a();  
 echo "'a' - said the " . __CLASS__ . "<br/>";  
 }  
 function say_b()  
 {  
 parent::say_b();  
 echo "'b' - said the " . get_class($this) . "<br/>";  
 }  
}  
  
$obj_b = new derived_class();  
$obj_b->say_a();  
echo "<br/>";  
$obj_b->say_b();  
?>  
结果为:  
'a' - said the base_class  
'a' - said the derived_class  
  
'b' - said the  derived_class  
'b' - said the derived_class  
?場合によっては、__CLASS__ の代わりに get_class を使用できます。

4、__FUNCTION__ および __METHOD__

__FUNCTION__: 関数名、php5 で返される結果は大文字と小文字が区別されます
__METHOD__: メソッド内の関数名、php5 で返される結果は大文字と小文字が区別されます

どちらも取得方法の名前です。違いは何ですか?

<?php  
class test  
{  
 function a()  
 {  
 echo __FUNCTION__;  
 echo "<br>";  
 echo __METHOD__;  
 }  
}  
  
function good (){  
 echo __FUNCTION__;  
 echo "<br>";  
 echo __METHOD__;  
}  
  
$test = new test();  
$test->a();  
echo "<br>";  
good();  
?>  
返回结果:  
a  
test::a  
good  
good 
? 分離関数と比較すると、どちらもクラス内のメソッドの場合は関数名を抽出することができますが、__METHOD__ はメソッドを抽出することしかできません。 name 、クラス名 を抽出することもできます。

5、__DIR__

ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能)

5.3 より前のバージョンで __DIR__ を使用したい場合は、次のようにすることができます

<?php  
if(!defined('__DIR__')) {  
 $iPos = strrpos(__FILE__, "/");  
 define("__DIR__", substr(__FILE__, 0, $iPos) . "/");  
}  
?> 
?6,__NAMESPACE__

現在の名前空間の名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)

7,__STATIC__

当你调用class的静态方法时,返回class名称,区分大小写。如果在继承中调用的话,不管在继承中有没有定义,都能返回继承的class名。

<?php  
//php5.3  
class Model  
{  
 public static function find()  
 {  
 echo __STATIC__;  
 }  
}  
  
class Product extends Model {}  
class User extends Model {}  
  
Product::find(); // "Product"  
User::find(); // "User"  
?>
?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。