为什么在PHP 5中静态...示例

时间:2010-10-14 11:05:15

标签: php php-5.2

有人可以解释我这两个班级之间的区别吗?为什么要使用静态类而不是新对象?

class User 
{

  protected $users = array();

/**
 * Create new user
 *
 * @param string $name Username
 * @return array Users
 */
public function create($name)
{
    $this->users[] = $name;
    return $this->users;
}
}

$u = new User();
var_dump($u->create('TEST'));

class User
{
    protected static $users = array();

/**
 * Create new user
 *
 * @param string $name Username
 * @return array Users
 */
public static function create($name)
{
      self::$users[] = $name;
      return self::$users,
}
}

$u = User::create('TEST');
var_dump($u);

3 个答案:

答案 0 :(得分:6)

非静态成员绑定到单个实例。如果您需要工厂或实例注册表,那么这不是您想要的,因此我们将相关成员设置为静态。

答案 1 :(得分:3)

有很多用例,主要是:工厂模式,单身人士等。但实际上,它可以适用于许多情况来详细说明它们。例如,使用您的代码:$user = User::create()->addName('foo')->addSurname('bar');来保存一些代码行。

答案 2 :(得分:0)

Static表示该类是实例类。在外行人的术语中,你只需要初始化一次对象,然后它将在内存中,直到对象的生命周期完成或你明确地销毁对象。

这意味着该对象有一个实例,而如果每次创建一个新对象时都会产生内存影响。

请注意,这两个类的用法必须在上下文中。某些类必须是重复使用的实例类,而某些类由于某些约束需要是普通类。请在进入之前定义您的最终目标。并对此主题进行一些阅读。

网上有很多好的辩论和文章可以解释它比我更好。