PHP类函数既不是方法也不是静态的

时间:2011-08-02 09:58:32

标签: php oop class object

我想在我的班级中使用一个函数来执行一个简单的任务,例如:

function hello($name) { return 'hello '.$name; }

即。不一定是静态的(虽然我想它可能是),但与对象无关(没有引用$ this)。

我是否使用静态功能?即

static function hello($name){return 'hello '.$name;}

并使用$string = ClassName::hello('Alex');

进行调用

还是有更好的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

不需要调用对象实例并且应该能够在没有对象实例的情况下执行的类方法应声明为static。

静态方法没有$ this,应该被称为ClassName :: methodName()。

静态方法可以访问其类的静态成员变量。

答案 1 :(得分:2)

静态函数应该是静态函数 如果它是无状态的,那么使用静态。

您也可以在类* Utils中封装类似函数的组。所以这些功能就像帮助者

class StringUtils{
function splitBy($delimeter,$val){....}
}

than you call it StringUtils::splitBy(..)

意思是如果它与对象无关,请将其分开。

您可以将utils文件夹带到每个项目中,并在其上和之后重复使用....

答案 2 :(得分:1)

  1. 这门课程的功能是什么?如果它不属于它 - 只需移动到其他地方
  2. ...如果属于那么问题是可以在不创建对象的情况下调用它

答案 3 :(得分:1)

如果没有引用$ this(或将来可能引用$ this),请将其设为静态。

我之所以这样说,是因为有时我会选择:

static function hello( $name ) { return 'hello '.$name; }

在开发和扩展该程序几个月后,我觉得需要引用$ this,如:

function hello( $name ) { return $this->helloInLanguage[ $this->language ].' '.$name; };