我正在深入研究php类/构造函数的基础知识。 我理解构造函数是如何工作的,但不是我应该使用它的原因。 例如,当我有这样的构造函数时:
function __construct($arg1, $arg2){
$this->name = $arg1;
$this->speed = $arg2;
}
为什么我应该使用__constructor而不是简单的回调,如:
function foo($arg1,$arg2){
$this->name = $arg1;
$this->speed = $arg2;
}
谢谢
答案 0 :(得分:1)
否则
$obj = new Class($var1, $var2);
和
$obj = new Class($var1, $var2);
$obj->foo($var1, $var2);
具有相同的最终结果
通过强制在构造函数上传递值,类可以定义它应该具有的强制值以构造类。与后一种情况一样,可以忽略foo。
有一个初始化方法的方法,最终有不同的方法名,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;
}
}
使用构造函数可以确保数字将被初始化。我希望我的回答很清楚,但如果你对我的回答有另一个问题,请随意在评论中提问:)