이전 글 "PHP 상수의 정의와 가치 획득에 대해 알아보세요"에서는 PHP의 상수에 대한 기본 지식을 자세히 소개했습니다. 이번 글에서는 매직 상수에 대한 관련 지식을 살펴보겠습니다. PHP. 모두에게 도움이 되길 바랍니다!
이전 글에서는 PHP의 간단한 정의와 상수 획득에 대한 기본 지식과 몇 가지 매직 메소드에 대해 배웠습니다. 다음으로 마법상수 관련 지식과 그것이 무엇인지, 마법상수의 주요 용도는 무엇인지 살펴보겠습니다.
매직 상수란 무엇인가요?
매직 상수는 엄밀히 말하면 상수가 아닙니다. 이전 글에서 소개했듯이 상수는 정의된 후에는 변경할 수 없습니다. 그러나 매직 상수는 PHP에서 미리 정의한 일부 상수입니다. 이러한 미리 정의된 상수는 위치 변경으로 인해 변경될 수 있습니다.
모든 스크립트에서 PHP는 사전 정의된 많은 상수를 제공합니다. 상수마다 확장 라이브러리가 다릅니다. 매직 상수는 미리 정의된 특별한 상수로 이해될 수 있습니다.
마법 상수의 쓰기 형식은 일반적으로 두 개의 밑줄로 시작하고 두 개의 밑줄로 끝나는 두 개의 밑줄(__
)입니다. 예: __LINE__
, __FILE__ code> 등 잠깐만요. 형식을 작성할 때 매직 상수는 대소문자를 구분하지 않는다는 점을 알아야 하지만 작성할 때 대문자를 사용하도록 노력하십시오. <code>__
)开头两个下划线结尾,比如:__LINE__
、__FILE__
等等。讲到书写格式的话,需要知道,魔术常量不区分大小写,但是尽量书写的时候还是采用大写的形式。
魔术常量的使用
PHP的运行环境中提供了八个魔术常量,就像上文中说的,虽然被叫做常量,但准确来说不算是常量,他们的值随着代码中的变化而改变,接下来我们分别来看一下这八个魔术变量。
1.<strong><span style="font-size: 16px;">__LINE__ </span></strong>
表示文件中当前的行号
接下来我们通过示例来看一下__LINE__
魔术常量的使用,并且看一下随着位置的变化魔术常量的值有什么变化。
示例如下:
<?php echo '这是第 " ' . __LINE__ . ' " 行<br/>'; echo '这是第 " ' . __LINE__ . ' " 行<br/>'; echo '---------------<br/>'; echo '这是第 " ' . __LINE__ . ' " 行'; ?>
输出结果:
在上述示例中,我们通过魔术变量__LINE__就能够获取当前代码所在位置的行数。
其中需要注意的是:我们能够发现,当代码所在的位置不同,其所输出的结果也是不同的。所以我们上文中说了魔术常量并不能算是常量,它的值随着代码的变化而改变。我们接着往下看:
2.__FILE__
表示文件的绝对路径
通过__FILE__
能够获取文件的绝对路径,并且这个路径包含了文件名。其中需要注意的是,如果该魔术常量用在了包含文件中,那么返回的结果是被包含的文件名。
下面我们通过示例来看一下__FILE__的使用,示例如下:
<?php echo '该文件位于 " ' . __FILE__ . ' " '; ?>
输出结果:
在上述示例中我们便是通过__FILE__完成了对文件绝对路径的获取。
3.__DIR__
用于表示文件所在目录
通过__DIR__
能够获取文件所在的目录,这个文件所在的目录与__FILE__获取文件的绝对路径还是不一样的,文件所在的目录是不带有当前文件的文件名的。也可以把该魔术常量理解为 dirname(__FILE__)
。
下面我们通过示例来看一下__DIR__魔术常量的使用,示例如下:
<?php echo '该文件位于 " ' . __DIR__ . ' " '; echo dirname(__FILE__); ?>
输出结果:
上述示例中我们通过两种方法,都获取到了当前文件所在的目录,一个是通过__DIR__魔术常量,另一个是dirname(__FILE__),它们俩能够达到的效果是相同的。
4.__FUNCTION__
用于获取当前函数名或方法名
通过__FUNCTION__
PHP는 실행 환경에서 8개의 매직 상수를 제공합니다. 위에서 언급한 것처럼 상수라고 부르지만, 정확한 값은 코드에 따라 다릅니다. 다음으로, 이 8가지 마법 변수를 개별적으로 살펴보겠습니다.
1.
🎜<span style="font-size: 16px;">__LINE__ 🎜🎜
🎜는 파일의 현재 줄 번호를 나타냅니다. 🎜🎜🎜🎜 다음으로 예제를 통해 __LINE__
매직 상수의 사용을 살펴보고, 매직 상수가 position 상수 값은 어떻게 되나요? 🎜🎜예제는 다음과 같습니다. 🎜<?php function test() { echo '通过__FUNCTION__获取的函数名为:' . __FUNCTION__ ; } test(); ?>
__FILE__
는 __FILE__
을 통해 🎜🎜🎜🎜 파일의 절대 경로를 나타냅니다. 파일의 절대 경로를 얻을 수 있으며, 이 경로에는 파일 이름이 포함됩니다. 포함된 파일에서 매직 상수가 사용되는 경우 반환된 결과는 포함된 파일의 이름이라는 점에 유의해야 합니다. 🎜🎜예제를 통해 __FILE__의 사용법을 살펴보겠습니다. 🎜<?php class test { function _print() { echo '通过__CLASS__获取的类名为:' . __CLASS__ . "<br>"; echo '通过__FUNCTION__获取的函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>
__DIR__
은 파일이 있는 디렉터리를 나타내는 데 사용됩니다🎜🎜🎜🎜🎜🎜를 통해 얻을 수 있습니다. __DIR__
🎜 파일이 있는 디렉터리가 __FILE__에서 파일을 가져오는 데 사용하는 절대 경로와 여전히 다릅니다. 파일이 있는 디렉터리에 현재 파일의 파일 이름이 없습니다. 이 마법 상수는 dirname(__FILE__)
로도 이해할 수 있습니다. 🎜🎜예제를 통해 __DIR__ 매직 상수의 사용법을 살펴보겠습니다. 🎜<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
__FUNCTION__
은 현재 함수 이름이나 메서드 이름을 가져오는 데 사용됩니다.🎜🎜🎜🎜__FUNCTION__<을 통해 얻을 수 있습니다. /code> 현재 함수나 메소드의 이름 다음으로 __FUNCTION__ 매직 상수의 사용법을 예시를 통해 살펴보겠습니다. 🎜🎜예제는 다음과 같습니다. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
function testMethod()
{
echo &#39;当前的函数名为:&#39; . __METHOD__ . PHP_EOL . &#39;<br/>&#39;;
}
class TestMethodClass
{
function testMethod1()
{
echo &#39;当前的方法名和类名为:&#39; . __METHOD__ . PHP_EOL;
}
}
testMethod();
$test = new TestMethodClass();
$test->testMethod1();
?></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜출력 결과: 🎜🎜🎜🎜🎜🎜위의 예를 통해 __FUNCTION__이 현재 함수의 함수 이름을 얻을 수 있다는 것을 알 수 있습니다. 🎜🎜<p><strong><span style="font-size: 16px;">5.<code>__CLASS__
用于获取当前的类名通过__CLASS__
可以用于获取当前的类名,齐总也包括了当前类的作用区域或命名空间。接下来我们通过示例来看一下__CLASS__的使用。
示例如下:
<?php class test { function _print() { echo '通过__CLASS__获取的类名为:' . __CLASS__ . "<br>"; echo '通过__FUNCTION__获取的函数名为:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>
输出结果:
通过上述示例已经了解在PHP中可以通过__CLASS__来获取当前的类名。
6.__TRAIT__
当前的trait名称
通过__TEAIT__
能够表示当前的trait名称,这其中包括了trait的作用区域或者命名空间。接下来我们通过示例来看一下__TRAIT__的使用。
示例如下:
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
输出结果:
7.__METHOD__
当前的方法名
通过__METHOD__
能够获取当前的方法名,其中也包括类名,接下来我们通过示例来看一下__METHOD__的使用方法,示例如下:
<?php function testMethod() { echo '当前的函数名为:' . __METHOD__ . PHP_EOL . '<br/>'; } class TestMethodClass { function testMethod1() { echo '当前的方法名和类名为:' . __METHOD__ . PHP_EOL; } } testMethod(); $test = new TestMethodClass(); $test->testMethod1(); ?>
输出结果:
上述示例中,我们通过__METHOD__获取了函数名和方法名。其中方法名中包括了类名。
8.__NAMESPACE__
当前文件的命名空间名称
通过__NAMESPACE__
可以获取当前文件的命名空间名称,接下来我们通过示例来看一下,示例如下:
<?php namespace MyProject; echo '命名空间为:"', __NAMESPACE__, '"'; ?>
输出结果:
到此我们便是通过示例将八种魔术常量了解了一下。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
위 내용은 PHP에서 일반적으로 사용되는 8가지 매직 상수를 사용하는 방법 알아보기(자세한 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!