update : 2015.11.03
php.shukuma.com

검색:
 
 
static 키워드

static 키워드

Tip

이 문서에서는 정적 메서드와 프로퍼티를 정의할수 있는 static 키워드의 사용법을 설명합니다. static 키워드는 또한 정적 변수를 정의늦은 정적 바인딩에 사용될 수 있습니다. 각각의 static 이 의미하는바는 문서를 참조하시기 바랍니다.

클래스의 메서드와 프로퍼티를 static으로 선언한다는 것은 해당 클래스의 인스턴스화가 필요없이 해당 프로퍼티와 메서드에 접근가능 하게함을 의미합니다. static 키워드로 선언된 프로퍼티는 인스턴스화된 클래스의 객체로 접근할 수 없습니다.(하지만 static 메서드는 가능합니다.)

PHP 4 와의 호환을 위해서, 접근 지정자 선언이 사용되지 않았다면, 프로퍼티와 메서드는 public 으로 선언된것으로 다루게 됩니다.

static 메서드가 인스턴스객체의 필요없이 호출이 가능한 이유로, 의사변수 $this 는 static으로 선언된 메서드안에는 존재하지 않습니다.

정적 프로퍼티는 객체의 -> 연산자를 통한 접근을 할수 없습니다.

non-static 메서드의 정적인 호출은 E_STRICT 수준의 경고를 발생합니다.

다른 PHP 의 정적 변수처럼, static 프로퍼티는 리터털이나 상수로만 초기화 될수 있습니다; 표현식은 허용되지 않습니다. (예를들어)정수나 배열로 static 프로퍼티를 초기화 할수 있지만, 다른변수나, 함수의 리턴값, 객체로는 초기화할수 없습니다.

PHP 5.3.0 이후에서는 변수를 사용하여 클래스를 참조할 수 있습니다. 변수의 값은 (e.g. self, parent and static) 키워드로 지정될 수 없습니다.

Example #1 정적 프로퍼티 예제

<?php
class Foo
{
    public static 
$my_static 'foo';

    public function 
staticValue() {
        return 
self::$my_static;
    }
}

class 
Bar extends Foo
{
    public function 
fooStatic() {
        return 
parent::$my_static;
    }
}


print 
Foo::$my_static "\n";

$foo = new Foo();
print 
$foo->staticValue() . "\n";
print 
$foo->my_static "\n";      // Undefined "Property" my_static 

print $foo::$my_static "\n";
$classname 'Foo';
print 
$classname::$my_static "\n"// As of PHP 5.3.0

print Bar::$my_static "\n";
$bar = new Bar();
print 
$bar->fooStatic() . "\n";
?>

Example #2 정적 메서드 예제

<?php
class Foo {
    public static function 
aStaticMethod() {
        
// ...
    
}
}

Foo::aStaticMethod();
$classname 'Foo';
$classname::aStaticMethod(); // PHP 5.3.0 이후부터 지원
?>