PHP类,被认为是不好的做法?二传手和吸气剂

时间:2013-11-30 19:33:09

标签: php class oop

快速提问: 在Construct函数中设置一些东西被认为是不好的做法:

Class whatever {

    $var = "";

    public function __construct($var){
        $this->var = $var;
    }

    //And then return it in another function like
    public function getVar(){
        return $this->var;
    }
}

3 个答案:

答案 0 :(得分:2)

是的,这是不好的做法,因为你没有声明$var而没有使用setter方法。当你不声明变量时,getter和setter方法的含义完全消失,而不是声明它是私有的或受保护的。然后你可以选择$class->var=something

Class whatever {
 private $var;

 public function __construct($var){
   $this->setVar($var);
 }

 public function setVar($var){
   $this->var = $var;
 }

 public function getVar(){
   return $this->var;
 }
}

答案 1 :(得分:1)

不,这不是一个好习惯。

假设您有20个字段,并且必须填写它们才能正确使用类。

良好的做法是在施工中初始化它们。如果你使用setter,你必须调用20个方法。

答案 2 :(得分:-1)

你有很好的答案,但我会给你一些关于更多信息的纲要

构造函数是什么?

如果您的班级实例需要初始化

,请在班级中使用构造函数
  • 构造函数中设置的变量的getter可以用作查找实例初始化方式的方法

制定者

当您需要修改实例的行为或者想要将数据加载到实例中时,您需要这些

吸气剂

检索实例内容的唯一方法(由于种种原因,不鼓励公共属性)

我的例子

随意做你想做的事情,这只是一个例子,它显然没有做任何事情。如果你想问这个问题,请做

<?php
class AnExampleClass {
  // this is convenient sometimes but I don't recommend it
  public $public = '';
  protected $protected;
  private $private;
  public function __construct($private, $protected){
    $this->private = $private;
    $this->setProtected($protected);
  }
  public function getPrivate(){
    return $this->private;
  }
  public function getProtected() {
    return $this->protected;
  }
  public function setProtected($protected) {
    // only allow boolean
    $this->protected = (bool)$protected;
  }
  public function __get($name) {
    // read the manual on this magic
  }
  public function __set($name, $value) {
    // read the manual on this magic
  }
}