>  기사  >  백엔드 개발  >  PHP 정적 메서드 및 속성

PHP 정적 메서드 및 속성

WBOY
WBOY원래의
2016-08-08 09:32:22913검색
class hw
{
	public static function hi()
	{
		return 'Hello World';
	}
}
echo hw::hi();//Output:Hellp World

class hw2
{
	public function hi()
	{
		return 'Hello Wrold';
	}
}
echo hw2::hi();//Output:Hellp World

위 예시에서 볼 수 있듯이 static 속성을 사용한 후, static 속성을 사용하지 않은 후 직접 :: 메소드를 사용하여 외부에서 직접 호출할 수 있습니다. 그러나 효율성 및 기타 이유로 인해 정적 제한을 사용하는 것이 좋습니다.

정적 클래스 내에서 메소드 호출

class foo
{
    private static function c()
    {
        return 'abcde';
    }

    public static function a()
    {
        echo self::c();
    }

    public static function b()
    {
        echo $this->c();
    }

    public function  e()
    {
        echo self::c();
    }
}
foo::a();//Output:abcde
foo::b();//Output:Fatal error: Using $this when not in object context in
foo::e();//Output:abcef

정적 키워드를 사용하여 제한된 메소드는 self::를 사용하여 이 클래스 내에서 참조되어야 합니다.

정적 속성

class foo
{
	public static $a;
	public static function a()
	{
		self::$a = 'abcd';
	}
}
foo::a();//Output:abcde
echo foo::$a;

정적 상속 및 사용

class foo
{
	public static $a;
	public static function a()
	{
		return 'abcde';
	}
}

class soo extends foo
{
	public static function a()
	{
		echo '12345';
	}
}

soo::a();//Output:12345
정적 상속은 일반 클래스의 상속 방식과 동일하며, 차이가 없습니다. 큰 차이가 있습니다.

class foo
{
	public static $a;
	public static function a()
	{
		return 'abcde';
	}
}

class soo extends foo
{
	public static function a()
	{
		echo parent::a();
	}
}

soo::a();//Output:12345

사용시 표기상의 차이만 있습니다. 상위 클래스의 메소드를 참조하려면 parent:: 메소드여야 하며, self::와 직접 사용할 수는 없습니다. , 그렇지 않으면 출력이 없습니다:

class foo
{
	public static $a;
	public static function a()
	{
		return 'abcd';
	}
}
 
class soo extends foo
{
	public static  function aa()
	{
		echo self::a();
	}
}
soo::a();  

위 내용은 내용의 측면을 포함하여 PHP의 정적 메서드와 속성을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.