Php 包含在单独的函数中会导致未定义的变量吗?

Php 包含在单独的函数中会导致未定义的变量吗?,php,Php,这不起作用,导致order details.php中未定义变量 public function getJobById($jobId) { $orderDetails = $this->jobModel->getJobById($jobId); $payments = $this->paymentModel->getAllPaymentsForJobOrder($jobId); $this->loadOrderDetailsPage(); }

这不起作用,导致
order details.php中未定义变量

public function getJobById($jobId)
{
    $orderDetails = $this->jobModel->getJobById($jobId);
    $payments = $this->paymentModel->getAllPaymentsForJobOrder($jobId);
    $this->loadOrderDetailsPage();
}

public function loadOrderDetailsPage()
{
    include './order-details.php';
}
这与预期的效果一样:

public function getJobById($jobId)
{
    $orderDetails = $this->jobModel->getJobById($jobId);
    $payments = $this->paymentModel->getAllPaymentsForJobOrder($jobId);
    include './order-details.php';
}

我不知道为什么。

这是一种非常奇怪的代码结构方式。但我想您可以将变量作为函数参数传递给第二个函数。基本上,它们是未定义的,因为您处于一个新函数的上下文中,并且这些变量仅在第一个函数的范围内。但我怀疑,无论您有什么功能目标,都可能通过其他方式更好地实现,在更大的范围内实现,而不是在这个小示例中介绍。@David我明白了。基本上,我试图模仿MVC的行为,在这之前,我有一个函数,只用于显示视图。老实说,我不确定这是否是正确的方法,或者我应该直接在函数中加载视图,而不使用第二个函数仅用于显示它。你把MVC搞错了@伊洛格布怎么会这样?上面的代码是在我的控制器中,而不是在我的模型中,如果这是基于你给出的链接的意思的话。但我想您可以将变量作为函数参数传递给第二个函数。基本上,它们是未定义的,因为您处于一个新函数的上下文中,并且这些变量仅在第一个函数的范围内。但我怀疑,无论您有什么功能目标,都可能通过其他方式更好地实现,在更大的范围内实现,而不是在这个小示例中介绍。@David我明白了。基本上,我试图模仿MVC的行为,在这之前,我有一个函数,只用于显示视图。老实说,我不确定这是否是正确的方法,或者我应该直接在函数中加载视图,而不使用第二个函数仅用于显示它。你把MVC搞错了@伊洛格布怎么会这样?上面的代码在我的控制器中,而不是在我的模型中,如果这是基于您提供的链接的意思的话。