gpt4 book ai didi

php - 不在对象上下文中时使用 $this - Laravel 4

转载 作者:可可西里 更新时间:2023-10-31 23:31:30 28 4
gpt4 key购买 nike

我的 Contact.php 模型中有这两种方法:

public function getSubscribers($listId)
{
return $this->withTrashed()
->where(DB::raw("concat('',email * 1)"), '!=', DB::raw('email'))
->where('opt_out', '0')
->select('email')
->chunk(1000, function($results) use ($listId) { $this->subscribeEmails($listId, $results); });
}

public function subscribeEmails($listId, $subscribers)
{
$emails = array();

foreach ($subscribers as $key => $subscriber)
{
$memberActivity = $subscriber->memberActivity($listId);

if ( ! $memberActivity['data'])
{
$emails[] = array('email' => $subscriber->email);
}
else
{
foreach ($memberActivity['data'] as $data)
{
foreach ($data['activity'] as $activity)
{
if ($activity['action'] !== 'unsub')
{
$emails[] = array('email' => $subscriber->email);
}
}
}
}
}

MailchimpWrapper::lists()->batchSubscribe($listId, $emails, false, true);
}

并且在我的 AdminContactsController.php Controller 中通过名为 updateMailchimp() 的方法调用了 getSubscribers() 方法:

public function updateMailchimp()
{
$this->contact->getSubscribers($this->listId);

$message = (object) array(
'title' => 'Excellent!',
'content' => 'The Mailchimp newsletter list has been updated with the latest contacts from within the system.',
'alert_type' => 'success'
);

return Redirect::back()->with('message', $message);
}

在本地,这很好用,完全没有问题,但在登台服务器上,我收到以下错误,引用行 cotaining ->chunk(1000, function($results) use ($listId) { $this->subscribeEmails ($listId, $results); });:

Using $this when not in object context

这是 PHP 版本问题还是我遗漏了什么?

最佳答案

您的代码在本地主机上运行而在远程服务器上运行不上的原因可能是 PHP 版本的差异。 PHP 5.4.0 之前 it is not possible to use $this from anonymous function 。您必须在 use 关键字中传递对 $this 的引用:

public function getSubscribers($listId)
{
$that = $this; // <---- create reference to $this
return $this->withTrashed()
->where(DB::raw("concat('',email * 1)"), '!=', DB::raw('email'))
->where('opt_out', '0')
->select('email')
->chunk(1000, function($results) use (&$that, $listId) { $this->subscribeEmails($listId, $results); });
}

关于php - 不在对象上下文中时使用 $this - Laravel 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263054/

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