声明函数时,什么是“静态(static)”的含义?

3

这是来自教程书的代码。

class user {
    // return if username is valid format
    public static function validateUsername($username){
        return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
    }
}

我想知道,static的作用是什么?

很遗憾,我读的那本书没有解释它 :(


1
严谨地说:那是一个方法,而不是一个函数(我知道它仍然使用“function”关键字,但它是一个方法,因为它绑定到一个类)... - ircmaxell
3个回答

13
最终的结果是你不需要创建类的实例来执行函数(其中还有更多内容,但我会让手册来涵盖这些部分): PHP: Static Keyword - Manual 在你的例子中,你可以像这样调用你的函数:
user::validateUsername("someUserName");

不必创建一个实例,然后再调用函数:

$user = new user();
$user->validateUsername("someUserName");

3
我会为这个答案投票,但它的意义远不止于此。 - Nick Larsen
@NickLarsen - 我稍作修改,以使语意更加明确。 - Justin Niessner

1

0

静态函数是属于类而不是对象实例的函数。它们可以直接引用而无需实例化类来调用。

user::validateUsername(...);

或者在类内部使用self关键字

self::validateUsername(...);

静态函数在某种程度上是全局函数。您应该谨慎使用这些函数,因为对静态函数的依赖性更难以提取,从而使测试和重用变得更加困难。

在PHP手册中阅读更多信息 - static关键字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接