-
-
기능: 현재 페이지에서 클래스를 사용할 때 해당 클래스의 파일을 자동으로 로드합니다. - $className 매개변수는 클래스 이름을 사용자 정의할 수 있습니다.
*/
function __autoload($className){
require("$ className.class.php");//클래스 파일 로드 One.class.php Two.class.php는 이 파일과 같은 디렉터리에 있습니다
- < ;p>echo '------ -------------
';//다음의 경우 표시로 테스트합니다. 호출
//다음 두 클래스는 이 파일에 정의되어 있지 않습니다
$o =new One();//클래스 1개 사용, 초기화
$t=new Two();//클래스 2개 사용, 초기화
- < p>?>
-
코드 복사
이 함수를 정상적으로 로드해야 하는 경우 파일 이름은 클래스 이름으로 설정(소문자 권장).class .php 등의 클래스 이름과 파일 이름 사이에 어느 정도 상관 관계가 있는 경우에만 해당 함수에서 예외가 발생하고 Catch에서 catch할 수 없는 경우 Fatal Error 이 표시됩니다.
2.__construct() 생성자
C#과 PHP4에서는 생성자의 함수 이름이 클래스 이름과 동일합니다. 물론 PHP5에서도 이를 지원합니다(__construct 메서드를 찾을 수 없는 경우 함수 이름은 클래스 이름과 동일합니다. 이 방식으로 작성하면 클래스 이름을 변경하려는 경우 생성자의 함수 이름을 변경하지 않고 클래스 이름만 변경하면 된다는 장점이 있습니다. 간단하게 샘플 코드를 작성해 보겠습니다.
-
-
class PcYoYo{
비공개 $url;
function __construct($url){
$this->url=$url;
}
}
?>
-
코드 복사
3.__destruct() 소멸자
__destruct 소멸자 메소드, PHP는 객체가 파괴되기 전에(즉, 메모리에서 지워지기 전에) 이 메소드를 호출합니다
기본적으로 PHP는 객체 속성이 차지하는 메모리만 해제하고 객체 관련 리소스를 파괴합니다.
소멸자를 사용하면 객체를 사용한 후 임의의 코드를 실행하여 메모리를 지울 수 있습니다.
PHP가 스크립트가 더 이상 객체와 연결되어 있지 않다고 판단하면 소멸자가 호출됩니다.
함수의 네임스페이스 내에서는 함수가 반환될 때 이런 일이 발생합니다.
전역 변수의 경우 이는 스크립트 끝에서 발생합니다. 개체를 명시적으로 삭제하려는 경우 개체를 가리키는 변수에 다른 값을 할당할 수 있습니다. 일반적으로 변수를 NULL로 할당하거나 unset을 호출합니다.
4.__call()은 호출된 멤버 메소드가 클래스에 존재하지 않을 때(또는 권한이 없을 때) 호출됩니다. 오류 발생 후 일부 작업을 수행하거나 정보를 묻는 데 사용됩니다.
-
-
//수업 초기화< p>
class Person{
private $name;
private $age; 🎜>비공개 $sex;
함수 걷기($시간,$분){
echo "$시간: $ 분 걷겠습니다 ";
}
function run(){
- < p> ;}
//매직 메서드 사용 __call
/*****
함수: 개체가 일부 작업을 수행하기 위해 클래스에 없는 함수를 호출할 때 자동으로 호출됩니다.
매개변수: $ proName 호출 함수 이름 $args 매개변수 배열 $proName, $args는 자신의 스타일에 맞게 변경할 수 있는 사용자 정의 형식 매개변수이지만 이 두 매개변수의 의미는 고정되어 있습니다
*** **/
- < ; p>function __call($proName,$args){
echo "$proName이(가) 존재하지 않습니다. 매개변수는 다음과 같습니다.";
- < ;print_r($args);
echo ' ';
}
- < ; p>}// 클래스 끝
//객체 인스턴스화
$p=new Person(); p>
//Person 클래스에 존재하는 메소드 호출
$p->walk(5,39);
-
//Person 클래스에 존재하지 않는 메소드 호출
$p->work();//매직 메소드인 __call을 사용하지 않으면 프로그램에서 오류가 발생합니다. 오류 메시지 치명적인 오류: 29행의 D:/phpnow/htdocs/holiday/magic__call.php에서 정의되지 않은 메소드 Person::work() 호출
//매직 메소드가 다음과 같은 경우 Used_ _call, 객체가 클래스에 존재하지 않는 함수를 호출하면 __call이 자동으로 호출되어 특정 작업을 수행합니다.
?>
-
-
코드 복사 5.__clone()
이 함수는 개체가 복제될 때 자동으로 호출되며, 해당 기능은 복제된 복사본에 대해 일부 초기화 작업을 수행하는 것입니다.
-
-
//수업 초기화< p>
class 컴퓨터{
//
public $cpu='intel'; p> ;
private $monitor;
private $keyboard;
//매직 메소드 설정 __clone() 함수< ;/p>
function __clone(){//이 매직 메서드를 설정하지 않으면 복제본은 완전히 동일해집니다. __clone 함수는 클래스의 생성자와 유사하며 일부 초기화를 수행합니다. 작업< /p>
$this->cpu='AMD';//$this는 새로 생성된 복제 개체를 나타냅니다
}
//=와 clone의 차이를 비교하도록 소멸자를 설정합니다
function __destruct(){
echo '************************************ '; p>
}
}// 클래스의 끝
//객체 인스턴스화
//객체에 대한 참조는 메모리에 저장되므로 참조 메서드를 사용하여 참조를 추가합니다. 스택 메모리, 포인터 용어로, 이는 $c1
가 가리키는 객체를 가리키는 포인터를 메모리에 생성하는 것을 의미합니다. //우리는 소멸자를 통해 객체의 복사본이 아니라고 판단합니다< ;/p>
$c2=$c1;
//객체를 복제하려면 clone 메소드를 사용하세요.
$c3=clone $c1;
//둘 사이의 정보 비교를 출력
echo $c1- >cpu,'< br>';
echo $c3->cpu,' ';
?< ;
-
코드 복사
6.__get() 객체가 호출한 멤버 속성이 선언되지 않았거나 레벨이 private 또는 protected 등인 경우, 이 함수에서 일부 작업을 자체적으로 수행할 수 있습니다
-
-
class Person{
private $name;
public $nation;
function __get($para){//필수 매개변수가 있습니다
echo $para.'존재하지 않습니다';
}
}
$p=new Person();
$name=$p->name;//__get 함수 호출< / p>
$nation=$p->nation;//__get 함수를 호출하지 마세요
?>
-
코드 복사
7.__set() 이 함수는 선언되지 않았거나 비공개 또는 보호 수준의 값을 할당할 때 호출됩니다. 이 기능 일부 작업
-
-
클래스 PC{
private $key;
function __set($key,$value){//두 개의 매개변수가 있어야 합니다. 하나는 멤버 속성이고 다른 하나는 매개변수입니다. 값은
echo '.$value.'에 '.$key.'를 할당하지 못했습니다.';
}< /p>
}
$p=new Pc();
$p->key= 123;< ;/p>
?>
-
코드 복사
1 2 다음 페이지 마지막 페이지
|