php构造函数与回调

时间:2013-05-28 05:05:38

标签: php class constructor callback

我正在深入研究php类/构造函数的基础知识。 我理解构造函数是如何工作的,但不是我应该使用它的原因。 例如,当我有这样的构造函数时:

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

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

function foo($arg1,$arg2){

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

谢谢

4 个答案:

答案 0 :(得分:1)

  1. 否则

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

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

    具有相同的最终结果

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

  3. 有一个初始化方法的方法,最终有不同的方法名,foo,init等,构造函数避免这个

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

<?php 
class abc {
    function __construct($arg1, $arg2){
        echo $arg1.' '.arg2;
    }
}
$obj = new abc('manish','jangir');
?>

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

答案 3 :(得分: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;
    }
}

使用构造函数可以确保数字将被初始化。我希望我的回答很清楚,但如果你对我的回答有另一个问题,请随意在评论中提问:)