我有一个相对简单的问题,虽然谷歌上有很多关于它的帖子,但我找不到一个简单地回答这个问题的帖子。
所以简短的问题是“在一个类中混合静态和非静态方法是否可以接受?”。我想我真的是在问“坚持使用一种方法是否是一种好的做法”,或者“使用两种方法时是否需要考虑一些事情”。
例如,如果我正在构建一个类来处理冰箱里的食物,那么以下哪一个(或其他什么)将是最好的方法
示例1:
Class Food
{
public function __construct( $itemName, $itemDescription )
{
.... some code for a new item of food ....
}
public static function getAllFood()
{
.... some code to get all the items in my fridge ....
}
}
$food = new Food( "apple", "Nice juicy Pink Lady apple" );
Food::getAllFood();
或者示例2:
Class Food
{
public function __construct( $itemName, $itemDescription )
{
.... some code for a new item of food ....
}
public function getAllFood()
{
.... some code to get all the items in my fridge ....
}
}
$food = new Food( "apple", "Nice juicy Pink Lady apple" );
$food->getAllFood();
提前致谢
问:在一个类中混合使用静态和非静态方法是否可以接受?
答:当然可以,只要:
1)你确实觉得这两种方法在逻辑上属于同一类,并且
2) 静态方法可以/应该独立于任何类实例进行调用。
最好的经验法则是当调用真正无状态时使用静态方法。
这是一个很好的讨论:
- http://verraes.net/2014/06/when-to-use-static-methods-in-php/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)