php5 중류의 학습

9938 단어 php5
클래스의 구조: 클래스의 내부에는 세 가지가 있을 수 있는데 그것이 바로 상량(constant), 속성(property)과 방법(method)이다. 기능은 클래스 외부의 상량, 변수와 함수로 이해할 수 있다.
 
 
 
    
<?php      
class TEST      
{      
    const NAME = 'value'; //        
    public $name = 'value'; //        
    public function name() //        
    {      
        echo 'value';      
    }      
}      
?>    

그 중에서 속성과 방법은 공공,protected,private 세 가지 서로 다른 키워드를 사용하여 속성과 방법의 작용 범위를 한층 더 구분할 수 있다.private 키워드의 속성과 방법을 가지고 있는 클래스의 방법만 호출할 수 있다.보호된 키워드를 가진 속성과 방법은 자신을 제외하고 자신의 부류와 부류 중의 방법도 호출할 수 있다.공공 키워드의 속성과 방법을 가지고 있으면 실례화된 이후의 대상에서 호출할 수 있다. 이렇게 하면 모든 속성과 방법에 묘사된 특징을 증가시켜 코드의 구조를 정리하고 조직하는 데 더욱 편리하다.const 키워드는 먼저 건너뛰고, 뒤에 있는static와 함께 이야기합니다. 
static 키워드는public,protected,private와는 다른 유형의 키워드입니다 (따라서public,protected,private와 겹쳐서 사용할 수 있습니다).
 
    
<?php      
class TEST      
{      
    public static function name()       
    {      
        echo 'value';      
    }      
}      
?>

static 키워드를 가진 방법은 클래스를 실례화하지 않은 상황에서':'기호 호출을 통해public,protected,private와 조합할 수도 있고 호출을 구분할 수도 있지만 보통public와 파트너가 된다. 앞에서 언급한 상수 키워드const는 publicstatic 유형이어야 하기 때문에self:::NAME,TEST::NAME 같은 형식으로만 상수를 호출할 수 있다. 뒤에 있는construct,__destruct 등 방법은 모두 static에 속합니다. 
클래스의 구조 부분에서 마지막으로 소개한 두 가지 키워드는 abstract와final이다. abstract 키워드는 이 클래스는 반드시 그의 하위 클래스에 복제되어야 한다는 것을 의미하고final 키워드는 이 클래스는 반드시 그의 하위 클래스에 복제될 수 없다는 것을 의미한다. 이 두 키워드의 기능은 정반대이다. abstract를 가진 방법은 추상적인 방법이 되고 추상적인 방법을 가진 클래스가 추상적인 클래스가 된다. 이것은 뒤에 소개가 있다. 
클래스 사용:
클래스의 사용에는 주로 두 가지 방법이 있는데 하나는 new 키워드를 사용하는 것이고 다른 하나는 ":"기호를 사용하는 것이다.
PHP 코드
 
    
<?php      
class TEST      
{      
    public static function name()       
    {      
        echo 'value';      
    }      
}      
// 1: new       
$test = new TEST;      
$test->name();      

// 2: “::”       
TEST::name();      
?> 
   
(1): new 키워드를 사용하여 실례화합니다. 위의 $test는 TEST 클래스를 통해 실례화된 대상입니다. $test->name ()는 $test 대상을 호출하는name 방법입니다. 
(2): new 키워드를 사용하여 클래스를 사용할 때 $this를 사용하여 클래스 자체를 가리킬 수 있습니다. 
(3):::기호를 사용하는 전제는 방법은static 키워드가 있어야 하고, new 키워드를 사용할 때 호출되는 방법은public 키워드가 있어야 한다는 것이다(한 방법은public,protected,private의 어떤 키워드가 없으면 public로 간주한다)
(4): 같은 종류는 new 키워드를 통해 여러 개의 다른 대상으로 실례될 수 있지만 서로 격리된다.":"기호를 사용할 때 방법은 여러 번 사용할 때 공유됩니다.
PHP 코드
4
 
    
<?php      
class TEST1      
{      
    public $name = 0;      
    public function name()       
    {      
        $this->name = $this->name + 1;      
    }      
}      

$test1 = new TEST1;      
$test2 = new TEST1;      
$test1->name(); //$name1 == 1      
$test2->name(); //$name1 == 1      

/*--------------------------------------------*/     

class TEST2      
{      
    public static $name = 0;      
    public static function name()       
    {      
        TEST2::$name = TEST2::$name + 1;      

    }      
}      
TEST2::name(); // $name == 1      
TEST2::name(); // $name == 2      
?>    
유형의 관계:
클래스와 클래스 간의 관계는 주로 추상, 인터페이스와 계승이 있다.
PHP 코드
 
    
<?php      
abstract class TEST1 //        
{      
    abstract public function name1();      
    public function name2()      
    {      

    }      
}      

class TEST2 extends TEST1 implements TEST3 //        
{      
    public function name1()      
    {      

    }      
}      

interface TEST3 //        
{      
    public function name2();      
}      
?>   

(1) abstract 키워드를 가진 클래스는 추상적인 클래스이고 abstract 키워드를 가진 방법은 추상적인 방법이며 추상적인 클래스의 추상적인 방법은 반드시 하위 클래스에서 복제되어야 한다. 
(2)인터페이스 키워드가 있는 클래스는 인터페이스입니다. 인터페이스는 어떠한 방법도 허용하지 않습니다. 인터페이스의 모든 방법은 하위 클래스에 복제되어야 합니다. 
(3)classa extends classB나classa implements classB라는 글자가 있는 것은 계승이다. extends는 다른 종류를 계승하는 것을 의미하고,implements는 다른 인터페이스를 계승하는 것을 의미하며, 한 번에 extends와 같은 종류만 가능하지만,implements는 여러 인터페이스를 계승할 수 있다. 
(4) 추상류, 인터페이스, 그리고 최종적으로 계승하고 실현하는 방법은 모두public이어야 한다. 
계승하는 과정에서 하위 클래스는 하위 클래스의 동명 방법을 덮어씁니다. 이럴 때 하위 클래스에서 하위 클래스를 호출하는 방법이 필요하면parent 키워드나 클래스 이름에':'기호를 붙여서 호출할 수 있습니다.
PHP 코드
 
    
<?php      
class TEST1 extends TEST2      
{      
    public function name()      
    {      
        echo parent::name2();      
        echo TEST2::name2();      
    }      
}      
class TEST2      
{      
    public function name2()      
    {      
        echo 'value2';      
    }      
}      
$test = new TEST1;      
$test->name();      
?>  
  
여기서 다시 한 번 설명하자면':'방법이 클래스에서의 작용, 하나의 작용은 실례화되지 않은 상황에서 상수(사실은static로 이해하면 된다)를 호출하는 것이다. static 속성과 방법은 클래스 내부에서self,parent와 클래스 이름을 통해 간편한 호출 채널을 구축하는 것이다. 
대상과 대상 간의 관계는 주로'=='은 같고'===='은 모두 같으며 clone과 같지 않다.
PHP 코드
class TEST     
{     
    public function name()     
    {     
    }     
}     
$test1 = new TEST;     
$test2 = new TEST;     
$test3 = $test1;     
echo $test1 == $test2 ? true : false; // true     
echo $test1 == $test3 ? true : false; // true     
echo $test2 == $test3 ? true : false; // true     
echo $test1 === $test2 ? true : false; // false     
echo $test1 === $test3 ? true : false; // true     
echo $test2 === $test3 ? true : false; // false     
?>    
(1) 두 종류가 같은 속성과 방법을 가지면'=='는 같다. 
(2) 두 클래스는 모두 "==="여야 하는 동일한 객체를 가리킵니다. 
clone은 비교적 특수하다. 위의 예에서 $test3 = $test1의 과정은 $test3에 $test1 대상의 복사본을 주는 것이 아니라 $test3이 $test1을 가리키게 한다. $test1의 복사본을 얻으려면 반드시 clone 키워드를 사용해야 한다.
PHP 코드
 
    
<?php      
$test3 = clone $test1;      
?>    

클래스 갈고리:
__autoload: 
하나의 함수 이름이자 클래스의 외부에서 사용하는 유일한 갈고리입니다. 하나의 대상을 실례화할 때, 클래스를 미리 불러오지 않으면 이 갈고리를 호출합니다. 
__construct 
클래스가 실례화될 때 호출된 갈고리는 초기화된 조작을 할 수 있다. 
__destruct 
클래스가 소각되었을 때 호출된 갈고리. 
__call 
대상이 존재하지 않는 방법을 사용하려고 시도할 때, 호출된 갈고리
__sleep 
serialize () 함수를 사용하여 하나의 클래스를 서열화할 때 이 갈고리를 호출합니다
__wakeup 
unserialize () 함수를 사용하여 하나의 클래스에 대해 반서열화 작업을 할 때 이 갈고리를 호출합니다
__toString 
대상이 문자열로 바뀔 때 이 갈고리를 사용합니다. (예: echo)
__set_state 
호출 varexport () 함수가 클래스를 조작할 때 이 갈고리를 호출합니다
__clone 
clone 키워드를 사용하여 클래스를 복사할 때 이 갈고리를 사용합니다
__get 
하나의 클래스의 속성 값을 가져올 때 이 갈고리를 사용합니다
__set 
하나의 클래스의 속성 값을 설정할 때 이 갈고리를 사용합니다
__isset 
isset () 함수를 사용하여 클래스의 속성 값을 판정할 때 이 갈고리를 호출합니다
__unset 
unset () 함수를 사용하여 속성 값을 삭제할 때 이 갈고리를 호출합니다
클래스의 팁:
실례가 같은 종류일 때 에게 이런 형식을 사용할 수 있다construct 갈고리 전달 매개 변수:
PHP 코드
 
    
<?php      
class TEST      
{      
    public function __construct($para)      
    {      
        echo $para;      
    }      
}      

$test = new TEST('value'); //   value      
?>   

foreach () 함수는 클래스나 대상의 속성을 훑어볼 수 있으며, 훑어볼 때public,protected,private의 상황을 판단하여 표시합니다.
PHP 코드
 
    
<?php      
class TEST      
{      
    public $property1 = 'value1';      
    public $property2 = 'value2';      
    public $property3 = 'value3';      

    public function name()      
    {      
        foreach($this as $key => $value)      
        {      
            print "$key => $value
";      
        }      
    }      
}      

$test = new TEST;      
foreach($test as $key => $value)      
{      
    print "$key => $value
";      
}      
$test->name();      
?>    

클래스의 방법에 매개 변수를 전달할 때 매개 변수를 강제로 판정할 수 있습니다. 여기는 수조와 대상에 대한 판정만 지원합니다.
PHP 코드
 
    
<?php      
class TEST1      
{      
    public function name( TEST2 $para )      
    {      

    }      
}      

class TEST2      
{      

}      

$test2 = new TEST2;      
$test1 = new TEST1;      

$test1->name('value'); //  , TEST2       
$test1->name($test1); //        
?>    

php4 호환 구문:
php5의 유형은 php4를 아래로 호환하는 것으로 이러한 php4 시대의 문법도 계승되었지만 php5 환경에서 사용하는 것을 권장하지 않는다. 
(1) var 사전 설정 속성을 사용하면 자동으로public로 변환됩니다. 
(2) 클래스 이름을 구조 함수로 사용하고 없음construct 구조 방법의 경우 클래스 이름과 같은 함수를 구조 함수로 찾습니다.

좋은 웹페이지 즐겨찾기