<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 前面与文章内容无关的部分</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment">### [defined() 和 isset() 函数有什么区别?什么时候该用 defined()?]</span></span><span>
在 PHP 编程中,`</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 和 `</span><span><span class="hljs-keyword">isset</span></span><span>()` 都是用于检查某个值的状态的函数,但它们各自的用途和工作原理有很大的不同。理解这两个函数的区别,能帮助我们在编写 PHP 代码时选择适当的函数来处理变量和常量的检查。下面我们来详细讨论这两个函数的区别以及它们各自的适用场景。
</span><span><span class="hljs-comment">#### 1. `defined()` 函数</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 是一个用来检查常量是否已经定义的函数。常量是在程序中定义一次后不可更改的值,而 `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 用于判断某个常量是否已经被定义。
**语法:**
```php
</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$ 이름은 확인할 상수 이름 (문자열)입니다.
반환 값 : 상수가 정의 된 경우 TRUE 리턴; 그렇지 않으면 false 를 반환합니다.
예:
<span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'끊임없는 MY_CONSTANT 정의되었습니다。'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'끊임없는 MY_CONSTANT 한정되지 않은。'</span></span><span>;
}
</span></span>
산출:
<span><span>끊임없는 MY_CONSTANT 정의되었습니다。
</span></span>
ISSET () 함수는 변수가 설정되어 있고 그 값이 null이 아닌지 확인하는 데 사용됩니다. 이 함수는 일반적으로 변수가 존재하고 값이 할당되었는지 확인하는 데 사용됩니다.
문법:
<span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$var</span></span><span>, </span><span><span class="hljs-keyword">mixed</span></span><span> ...</span><span><span class="hljs-variable">$vars</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
매개 변수 : $ var 는 확인할 변수이며 단일 변수 또는 여러 변수 일 수 있습니다.
반환 값 : RETURN TRUE 주어진 변수가 설정되어 있고 해당 값이 무효가 되지 않으면 거짓이됩니다 .
예:
<span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-string">'Hello'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'변하기 쉬운 $var 세트와 값은 그렇지 않습니다 null。'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'변하기 쉬운 $var 설정되지 않거나 AS null。'</span></span><span>;
}
</span></span>
산출:
<span><span>변하기 쉬운 $</span><span><span class="hljs-keyword">var</span></span><span> 세트와 값은 그렇지 않습니다 </span><span><span class="hljs-literal">null</span></span><span>。
</span></span>
작용 객체 : 정의 된 ()는 상수가 정의되는지 여부를 확인하는 데만 사용되는 반면 isset ()는 변수가 null이 아닌 설정되어 있는지 확인하는 데 사용됩니다.
해당 시나리오 : 정의 () 는 주로 상수에 사용되며 ISSET ()는 변수 (예 : 글로벌 변수, 배열 요소, 객체 속성 등)에 사용됩니다.
값 유형 : isset () 에 의해 확인 된 객체는 변수의 값이며 널 값은 일반적으로 무시됩니다. 정의 된 동안 ()는 상수가 존재하는지 확인합니다.
정의 () 는 주로 상수가 정의되었는지 확인하는 데 사용됩니다. 이것은 다음과 같은 상황에서 특히 유용합니다.
상수를 반복적으로 정의하지 마십시오 : 상수가 정의되었는지 확실하지 않은 경우 정의 ()를 사용하여 상수를 반복적으로 정의하는 오류를 피할 수 있습니다.
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
}
</span></span>
프레임 워크에서 사용 : 많은 PHP 프레임 워크 또는 라이브러리는 상수를 사용하여 구성 옵션을 정의합니다. 특정 상수가 정의되었는지 여부를 확인 해야하는 상황을 만나고 기존 구성 값을 덮어 쓰는 것을 피할 수 있습니다.
조건부 정의 상수 : 때로는 다른 운영 환경에 따라 다른 상수를 정의합니다. 정의 된 ()를 사용하여 다른 환경에 따라 상수를 조건부로 정의하십시오.
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ENVIRONMENT'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'ENVIRONMENT'</span></span><span>, </span><span><span class="hljs-string">'production'</span></span><span>);
}
</span></span>
ISSET ()는 변수가 설정되어 있고 NULL 이 아닌지 확인하는 데 사용됩니다. 이는 양식 제출, 배열 요소 및 글로벌 변수를 다룰 때 유용합니다. 몇 가지 일반적인 사용 시나리오는 다음과 같습니다.
양식 입력 확인 : 사용자 입력을 처리 할 때 ISSET ()를 사용하면 양식 필드가 비어 있고 비어 있지 않은지 확인하십시오.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>])) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'사용자 이름:'</span></span><span> . </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'사용자 이름未提交。'</span></span><span>;
}
</span></span>
배열 요소 점검 : ISSET ()을 사용하여 배열의 키가 존재하고 그 값이 null이 아닌지 확인하십시오.
<span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-literal">null</span></span><span>];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>])) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'이름:'</span></span><span> . </span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>];
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'이름未设置。'</span></span><span>;
}
</span></span>
객체 속성 확인 : isset ()를 사용하여 객체의 속성이 설정되었는지 확인할 수 있습니다.
<span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">User</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
}
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">User</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$user</span></span><span>->name)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'사용자 이름:'</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>->name;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'사용자 이름未设置。'</span></span><span>;
}
</span></span>
정의 ()는 상수가 정의되어 있는지 확인하는 데 사용되며 상수 관련 논리에 적합합니다.
ISSET ()는 변수가 설정되어 있고 null이 아닌지 확인하는 데 사용되며 변수 점검에 적합합니다.
실제 개발에서 필요에 따라 적절한 기능을 선택하면 코드의 견고성과 유지 관리가 향상 될 수 있습니다. 상수가 정의되어 있는지 확인할 때 정의 된 ()를 사용해야하는 경우; 변수를 확인하면 isset ()를 사용해야합니다.
<span><span><span class="hljs-comment">// 기사의 내용과 관련이없는 다음 부분</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>