首頁  >  文章  >  後端開發  >  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屬性以後都可以直接使用::方法從外面直接呼叫。但為了效率和其他方面因素,還是建議使用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

使用了static關鍵字來限制的方法必須使用self::在本類別內部引用。

static屬性

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

static繼承與使用

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
static的繼承與普通類別的繼承方法一樣,並沒有太大區別。

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