gpt4 book ai didi

php - 为什么 __destruct 中的逻辑

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:34 25 4
gpt4 key购买 nike

我找到了以下代码。这是一种特定的模式,还是构建这样的代码的原因 - 或者它只是伪造的?

class ExportCSV extends Export
{
// some private and public vars

public function __construct($arg)
{
// [...]
new CustomerReport($this);
}

public function procCallback($proc)
{
switch($proc){
case "customer":
new InvoiceReport($this);
break;
case "invoice":
new PrepaymentReport($this);
break;
case "prepayment":
new RefundReport($this);
break;
case "refund":
$this->sendMail();
break;
}
}
}

class CustomerReport extends Foobar
{
private $inst;
public function __construct($inst)
{
$this->inst = $inst;
$this->exportCustomers($inst->from, $inst->to);
}
public function __destruct()
{
$this->inst->procCallback("customer");
}
}

最佳答案

正如raina77ow所说,是一种模式的实现。此外,您必须考虑一旦对象在您的应用程序生命周期中被销毁,您想做什么。让我们考虑以下示例(拜托,这只是一个示例!)

假设您正在尝试实现 MVC 模式,并且您是应该制作“ View 部分”的人。那你需要什么?您需要获取请求中生成的所有变量,一旦它们准备好在响应中使用(通过 Controller 和模型),它们就应该呈现到 View 中。一种方法(当然还有其他方法)是通过魔术方法 __destruct() 实现此模式 (Observer)。例如这样的事情:

// your code here
public function __destruct() {
$this->grabAllTheVarsAndRenderThem();
// or you can include the views file
extract($this->viewParams);
include_once('my_file_view.php');
}

这只是一个示例,顺便说一句,非常冗长(您可以在方法名称中看到)。但是这个例子背后的想法是,在对象被销毁之前绑定(bind)一些行为

当然,在很多情况下您可以 - 而且您应该 - 实现此模式,这只是一个示例来解释使用此魔术方法的意义。

希望对您有所帮助!

关于php - 为什么 __destruct 中的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com