2017-01-06 27 views
-2

比方说,我有一个类:你能定义一个类之外的静态方法吗?

class test { 
    public static function sayHi() { 
     echo 'hi'; 
    } 
} 

称它为由test::sayHi();

我可以定义类的sayHi()外面或者是完全得到消除之类的?

public static function sayHi() { 
     echo 'hi'; 
} 

我只需要这个函数来封装脚本的代码。 也许答案不是一个静态方法,而是一个普通函数def?

+0

相似? http://stackoverflow.com/q/15608255 –

+0

@PraveenKumar类似的,但肯定不是一个骗局。 –

+0

这就是为什么我没有关闭。 ':D' –

回答

1

没有类的静态方法根本没有任何意义。静态关键字表示该方法对于该类的所有实例都是相同的。这使您可以将其称为..以及..静态地在类本身而不是其实例上。

如果该方法的内容是独立的,这意味着它不需要任何其他静态变量或类的方法,您可以简单地省略该类并将代码放入全局方法中。使用全局方法被认为是不好的做法。

所以我的建议是只保留班级,即使它只有一种方法。这样你仍然可以自动加载文件,而不必自己要求。在OOP

+0

全局方法的语法是什么? –

+0

function sayHi(){} ----默认情况下,任何函数都是public ...即使在类中。你不需要在函数中使用“静态”或“全局”,可能是变量而不是函数。 – Asfo

0

功能默认为公用,你可以将它们修改私人像:

或者像你说的,静态的,在公共或私人,如:

private static function test(){ 
    //do something 
} 

但如果你没有使用OOP,默认的功能是全局和公共的,你不能改变他们的私人访问。这不是他们应该工作的方式,因为如果您将他们的类型更改为私有,您将永远无法访问该功能。此外,静态不起作用,因为是OOP的另一个属性... ...

然后,您可以简单地创建该功能并从您想要的任何地方访问它(显然,在哪里可用:P,因为您需要包含文件存储)

相关问题