【发布时间】:2014-11-04 23:23:40
【问题描述】:
我有一个相对简单的问题,虽然 Google 上有很多关于它的帖子,但我找不到一个可以简单回答问题的帖子。
所以简短的问题是“在一个类中混合静态和非静态方法是否可以接受?”。我想我真的是在问“坚持使用一种方法是一种好习惯”,还是“同时使用这两种方法时有什么要考虑的事情”。
例如,如果我正在创建一个类来处理冰箱里的食物,那么以下哪个(或其他)是最好的方法
示例 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();
提前致谢
【问题讨论】:
-
两者都不是。我会有一个
Fridge,其中包含Food的集合(也许还有Drink等) -
@developerwjk。如果示例 1 中的静态函数具有从数据库中检索食物项目的代码会怎样。这与我实际想要实现的目标类似。
-
在这种情况下,我认为您应该将方法命名为
getAllFoodFromDB()以避免与类实例中的getAllFood()混淆。 -
PS:“getAllFood()”永远不应该是“静态的”,因为它总是引用冰箱的特定实例。另一种方法是使 getAllFood 静态...然后将您的“冰箱”实例作为参数传递。但最好将其设为非静态方法。
标签: php class static-functions