我有一个相对简单的问题,虽然谷歌上有很多关于它的帖子,但我找不到一个简单地回答这个问题的帖子。
所以简短的问题是“在一个类中混合静态和非静态方法是否可以接受?”。我想我真的在问“坚持使用一种方法是一种好习惯吗”,或者“在使用这两种方法时有什么需要考虑的事情”。
例如,如果我正在建立一个类(class)来处理我冰箱里的食物,以下哪个(或其他什么)是最好的方法
示例 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)可以/应该独立于任何类实例调用静态方法。
最好的经验法则是在调用真正无状态时使用静态方法。
这是一个很好的讨论:
关于php - 在一个类中混合静态和非静态方法是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746988/