Heim >Backend-Entwicklung >PHP-Tutorial >静态方法的访问

静态方法的访问

WBOY
WBOYOriginal
2016-06-06 20:34:351272Durchsuche

<code>class A
{
    public static function say($words)
    {
        return $words;
    }
}

$a = new A;

# 访问方法1
echo A::say('hi');


# 访问方法2
echo $a::say('hi');


# 访问方法3
echo $a->say('hi');
</code>

请问, 方法2和方法3是正常写法吗? 手册上查不到这两种写法.

但是实际中确实会用到后面两种写法:

传递model变量到视图, 因为使用了命名空间, 实在不想 \name\space\SomeModel::staticMethod() 这么用, 或先use导入;
就想图个省事: $model::staticMethod()

但不知道这后两种写法有没有什么副作用?

=============== 补充 ================

php版本 5.5.9, 上面3个方法都正常运行.

回复内容:

<code>class A
{
    public static function say($words)
    {
        return $words;
    }
}

$a = new A;

# 访问方法1
echo A::say('hi');


# 访问方法2
echo $a::say('hi');


# 访问方法3
echo $a->say('hi');
</code>

请问, 方法2和方法3是正常写法吗? 手册上查不到这两种写法.

但是实际中确实会用到后面两种写法:

传递model变量到视图, 因为使用了命名空间, 实在不想 \name\space\SomeModel::staticMethod() 这么用, 或先use导入;
就想图个省事: $model::staticMethod()

但不知道这后两种写法有没有什么副作用?

=============== 补充 ================

php版本 5.5.9, 上面3个方法都正常运行.

静态方法和变量虽然属于类,以类名::方法名或变量名方式访问,但是类实例也是可以访问的,跟实例访问普通方法和变量的方式一样,但是在静态方法中不能访问实例方法和变量。三种写法都是可以的:http://phpedia.net/#6xwrl9so

2与3可以写,但不推荐

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn