Home > Backend Development > PHP Tutorial > 静态方法的访问

静态方法的访问

WBOY
Release: 2016-06-06 20:34:35
Original
1273 people have browsed it

<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>
Copy after login
Copy after login

请问, 方法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>
Copy after login
Copy after login

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

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

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

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

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

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

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

2与3可以写,但不推荐

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template