【问题标题】:PHP use case scenarion when should I use function __constructPHP 用例场景什么时候应该使用函数 __construct
【发布时间】:2017-04-11 02:51:27
【问题描述】:

我开始按照规定的书学习 PHP OOP,但是它不是 IMO 中最好的书,并且导致相当多的混乱,尤其是关于 PHP 类的部分。

考虑以下内容:

     Class User{

    function setName($newName)
        {
            $this->name = $newName;
        }

        function getName()
        {
            return $this->name;
        }
}

该类没有构造方法:

因此,我的问题:

  1. 如果上面的类有一个属性$name 和一个引用$name var 的函数__construct,是否有必要创建setName() 方法?

  2. 如果是,什么时候适合构建构造方法?什么时候不是?作为一般经验法则,我认为为所有类属性构建构造方法是一种好的做法是否正确?

任何建议/帮助/参考表示赞赏。

【问题讨论】:

  • 即使您将$name 传递到构造函数中,您仍然希望这些方法来操作名称值,而不是使用您无法控制的公共属性。
  • 是的,您可以创建一个 __construct($name) 来设置 $name(或者让 __construct() 在内部调用 setName() 来执行此操作)。通常,如果您想设置类的某些初始状态,则需要 __construct() 。您是否需要setName() 方法取决于您将来是否需要更改 $name。

标签: php oop


【解决方案1】:

setName 和 __construct 有两种情况可以使用。

1 - 当你创建一个类的对象并且你想要类应该使用默认参数初始化然后使用 __construct 方法。

$obj = new UserName('john'); 

上述方法不能多次使用。因此,您需要一种方法来更改名称,而无需每次出现 setName 时都创建对象。

2 - setName 是在需要时重新初始化 name 属性的方法。

  $obj = new UserName('john'); //1st step
  echo $obj->getName(); //john displays
  //may be some sql query that gets name from db
  $obj->setName('david'); //here you cannot re-instantiate the object to set the name using construct method.
  $obj->getName(); //david displays

希望这一切顺利!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2020-05-29
    • 2011-03-12
    • 2023-04-02
    • 2011-04-15
    • 2017-04-10
    • 2012-03-19
    相关资源
    最近更新 更多