PHP에서 밑줄은 무엇을 의미합니까?
PHP에서 한 개의 밑줄은 프라이빗 변수와 프라이빗 메서드를 나타내고, 두 개의 밑줄은 PHP 내장 변수를 나타냅니다. 예를 들어, PHP는 두 개의 밑줄로 시작하는 메서드는 매직 메서드로 예약되어 있으므로 함수 이름은 사용하지 않는 것이 좋습니다. 기존 매직 메서드를 오버로드하는 것이 아니라면 __ 로 시작하세요.
이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP 밑줄은 무엇을 의미합니까?
PHP에서 밑줄로 시작하는 변수의 의미
이름 지정 규칙
하나 추가 비공개
의 경우 두 개를 추가하는 것은 일반적으로 시스템 기본값이며 시스템에 의해 미리 정의됩니다. 즉, 소위:
================= =====
"매직" 메서드" 및 "매직 상수"
======================
★PHP 상수는 다음으로 시작하고 끝납니다. 이중 밑줄은 "마법의 상수"입니다:
__LINE_ _파일의 현재 줄 번호.
__FILE__파일의 전체 경로 및 파일 이름입니다.
__DIR__파일이 위치한 디렉터리입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일이 있는 디렉터리를 반환합니다. dirname(__FILE__)과 동일합니다. 루트 디렉토리가 아닌 이상, 디렉토리 이름 뒤에 슬래시가 포함되지 않습니다
참고: 위 내용은 "PHP 중국어 설명서->언어 참조->상수->마법 상수"에서 가져온 것입니다.
php5 이상 버전부터 php 클래스는 매직 메소드를 사용할 수 있습니다.
PHP에서는 두 개의 밑줄(__)로 시작하는 메소드는 매직 메소드로 예약되어 있으므로 기존 매직 메소드를 오버로드하지 않는 한 함수 이름은 __로 시작하지 않는 것이 좋습니다.
PHP의 매직 메소드는 다음과 같습니다: __construct, __destruct, __call, __callStatic,__get, __set, __isset, __unset, __sleep, __wakeup, __toString, __set_state, __clone, __autoload
1, __get, __set
이 두 가지 메소드는 설계되었습니다. 클래스 및 해당 슈퍼클래스에 선언되지 않은 속성의 경우
__get( $property ) 이 메서드는 정의되지 않은 속성이 호출될 때 트리거되어 액세스되는 속성의 이름을 전달합니다.
__set($property, $value) 값을 할당할 때 정의되지 않은 속성인 경우 이 메서드가 트리거됩니다. 전달된 매개 변수는 설정할 속성 이름과 값입니다. 여기서 선언하지 않은 내용에는 개체를 호출할 때 비공개 속성(즉, 이를 수행하는 속성)이 포함됩니다. 접근 권한이 없습니다.)
2, __isset, __unset
__isset( $property ) 정의되지 않은 속성에 대해 isset() 함수가 호출될 때 이 메서드가 호출됩니다.
__unset( $property ) 정의되지 않은 속성에 대해 unset()이 호출될 때 이 메서드는 함수 중에 호출
여기에서 선언되지 않은 속성에는 개체를 사용하여 호출할 때 액세스 제어가 보호되고 비공개인 속성(즉, 액세스 권한이 없는 속성)이 포함됩니다
3. __call( $method, $arg_array ) 이 메소드는 정의되지 않은 메소드를 호출할 때 호출됩니다.
여기서 정의되지 않은 메소드에는 접근 권한이 없는 메소드도 포함되어 있습니다. 해당 메소드가 없으면 상위 클래스로 가서 메소드를 찾으세요. 상위 클래스에 없으면 이 클래스의 __call() 메서드를 호출하고, 이 클래스에 __call() 메서드가 없으면 상위 클래스
4의 __call() 메서드로 이동합니다. __autoload
__autoload 아직 정의되지 않은 클래스를 사용하려고 할 때 자동으로 호출되는 함수입니다. 이 함수를 호출하면 스크립팅 엔진은 PHP가 오류로 인해 실패하기 전에 필요한 클래스를 로드할 수 있는 마지막 기회를 갖게 됩니다.
전역 자동 로딩 클래스를 정의하려면 spl_autoload_register() 메서드를 사용하여 처리 클래스를 PHP 표준 라이브러리에 등록해야 합니다.
<?php class Loader { static function autoload_class($class_name) { //寻找正确的$class_name类,并引入,没有则抛出异常 } } /** * 设置对象的自动载入 * spl_autoload_register — Register given function as __autoload() implementation */ spl_autoload_register(array('Loader', 'autoload_class')); $a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类 ?>
참고: __autoload 함수에서 발생한 예외는 catch 문 블록에서 포착할 수 없습니다. 치명적인 오류가 발생하므로 함수 자체에서 잡아야 합니다.
5, __construct, __destruct
__construct 생성자 메서드인 이 메서드는 객체가 생성될 때 호출됩니다. PHP4와 비교하여 이 메서드를 사용하는 장점은 클래스 이름에 관계없이 생성자 메서드가 고유한 이름을 가질 수 있다는 것입니다. 뭐. 그래서 클래스 이름을 변경할 때 생성자 메소드
__destruct 소멸자 메소드의 이름을 변경할 필요가 없습니다. PHP는 객체가 파괴되기 전에 이 메소드를 호출합니다. , 메모리에서 지워지기 전). 기본적으로 PHP는 객체 속성이 차지하는 메모리만 해제하고 객체 관련 리소스를 파괴합니다. 소멸자를 사용하면 객체를 사용한 후 임의의 코드를 실행하여 메모리를 지울 수 있습니다. PHP가 스크립트가 더 이상 객체와 연결되어 있지 않다고 결정하면 소멸자가 호출됩니다.
함수의 네임스페이스에서는 함수가 반환될 때 이런 일이 발생합니다.
전역 변수의 경우 이는 스크립트 끝에서 발생합니다.
객체를 명시적으로 삭제하려면 객체를 가리키는 변수에 다른 값을 할당할 수 있습니다. 일반적으로 변수를 NULL로 할당하거나 unset을 호출합니다.
6, __clone
PHP5의 객체 할당은 참조 할당을 사용합니다. , 객체를 복사하려면 clone 메소드를 사용해야 합니다. 이 메소드가 호출되면 객체는 자동으로 __clone 매직 메소드를 호출합니다. 객체를 복사할 때 일부 초기화 작업을 수행해야 하는 경우 이를 구현할 수 있습니다. __clone 메서드에서.
7. __toString
__toString 메소드는 객체를 인쇄하기 위해 echo를 사용할 때와 같이 객체를 문자열로 변환할 때 자동으로 호출됩니다.
클래스가 이 메소드를 구현하지 않으면 에코를 통해 객체를 인쇄할 수 없습니다. 그렇지 않으면 다음과 같이 표시됩니다. Catchable fatal error: 클래스 테스트의 객체를 문자열로 변환할 수 없습니다.
이 메소드는 문자열을 반환해야 합니다.
PHP 5.2.0 이전에는 __toString 메서드가 echo() 또는 print()와 함께 사용될 때만 효과가 있었습니다. PHP 5.2.0 이후에는 모든 문자열 환경(예: %s 수정자를 사용하여 printf()를 통해)에서 적용할 수 있지만 문자열이 아닌 환경(예: %d 수정자 사용)에서는 사용할 수 없습니다. PHP 5.2.0부터 __toString 메소드를 정의하지 않은 객체가 문자열로 변환되면 E_RECOVERABLE_ERROR 오류가 보고됩니다.
8, __sleep, __wakeup
__sleep 직렬화할 때
__wakeup을 사용하세요. 역직렬화할 때
serialize()를 호출하여 클래스에 매직 이름이 __sleep인 함수가 있는지 확인하세요. 그렇다면 함수는 직렬화 전에 실행됩니다. 개체를 지우고 직렬화해야 하는 개체의 모든 변수 이름이 포함된 배열을 반환해야 합니다.
__sleep을 사용하는 목적은 개체에 있을 수 있는 모든 데이터베이스 연결을 닫거나 보류 중인 데이터를 제출하거나 유사한 정리 작업을 수행하는 것입니다. 또한 이 기능은 완전히 저장할 필요가 없는 매우 큰 개체가 있는 경우에 유용합니다.
반대로, unserialize()는 마법 이름이 __wakeup인 함수가 있는지 확인합니다. 이 함수는 개체에 있을 수 있는 모든 리소스(있는 경우)를 재구성할 수 있습니다.
__wakeup을 사용하는 목적은 직렬화 중에 손실되었을 수 있는 데이터베이스 연결을 다시 설정하고 기타 재초기화 작업을 처리하는 것입니다.
9. __set_state
var_export()가 호출되면 이 정적 메서드가 호출됩니다(PHP 5.1.0부터 유효).
이 메서드의 유일한 매개 변수는 배열('속성' => 값, …) 형식으로 정렬된 클래스 속성을 포함하는 배열입니다.
10. __invoke
함수를 호출하여 객체를 호출하려고 하면 __invoke 메서드가 자동으로 호출됩니다.
PHP5.3.0 이상이 유효합니다
11. __callStatic
__call() 매직 메소드와 유사하게 작동하며, __callStatic()은 정적 메소드 호출을 처리하는 것입니다.
PHP5.3.0 이상이 유효합니다
PHP 실제로 강화되었습니다. __callStatic() 메서드의 정의는 공개되어야 하며 정적으로 선언되어야 합니다. 마찬가지로, __call() 매직 메서드는 다른 모든 매직 메서드와 마찬가지로 public으로 정의되어야 합니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 밑줄은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.
