1

我目前正在深入研究 php 类/构造函数的基础知识。我了解构造函数的工作原理,但不了解为什么要使用它。例如,当我有这样的构造函数时:

function __construct($arg1, $arg2){
    $this->name  = $arg1;
    $this->speed = $arg2;
}

为什么我应该使用 __constructor 而不是简单的回调,例如:

function foo($arg1,$arg2){

    $this->name  = $arg1;
    $this->speed = $arg2;
}

谢谢

4

4 回答 4

1
  1. 正在做

    $obj = new Class($var1, $var2);
    

    $obj = new Class($var1, $var2);
    $obj->foo($var1, $var2);
    

    有相同的最终结果

  2. 通过强制在构造函数上传递值,类可以定义它应该具有的强制值以构造一个类。与后一种情况一样,可以忽略 foo。

  3. 有一个方法来初始化意味着,一个最终有不同的方法名称,foo,init等,构造函数避免了这种情况

于 2013-05-28T05:14:32.590 回答
0

构造函数总是在对象实例化时被调用,并且是一种已知的模式。

您的第二个示例不是(如果它打算执行与构造函数类似的初始化角色)。

于 2013-05-28T05:08:47.600 回答
0
<?php 
class abc {
    function __construct($arg1, $arg2){
        echo $arg1.' '.arg2;
    }
}
$obj = new abc('manish','jangir');
?>

创建对象时,它会自动打印“manish jangir”

于 2013-05-28T05:11:09.657 回答
0

主要目的是保持你的代码干净。通过将初始化放在构造函数中,您可以确保要在其他函数中使用的变量将处于有效状态,例如:

class Foo{
    private $number;

    public function setNumber($number) {
        $this->number = $number;
    }

    public function getNumber() {
        if ($this->number=== null) {
            throw new RuntimeException("The Number is Null !");
        }
        return number;
    }
}

这是带有构造函数的类

class Foo{
    private $number;

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

    public function getNumber() {
        if ($this->number=== null) {
            throw new RuntimeException("The Number is Null !");
        }
        return number;
    }
}

使用构造函数,您可以确定数字将被初始化。我希望我的回答足够清楚,但是如果您对我的回答还有其他问题,请随时在评论中提问:)

于 2013-05-28T05:14:59.817 回答