【发布时间】:2018-07-03 14:40:39
【问题描述】:
我试图声明一个静态变量,但总是为空,我尝试了几种组合和方法,但没有运气。我正在尝试使用一些数据存储一个 var,但我真的不想重新处理,如果已经处理过一次。
class PackingController extends Controller
{
protected static $i;
function Process(Request $request)
{
$r = new packing();
$v = $r->customer('data','data');
$items = $this->startProcess($v,false);
return \View::make('list/print',compact('items'));
}
private function startProcess($dbitems, $ajust=false)
{
//Some logic
self::$i = $items;
return $items;
}
function printPdf()
{
$items = self::$i;
//shows null:
dd($items);
}
}
怎么了?
更新:我尝试单例但没有运气。
namespace App\Helper;
class Items
{
private static $_items;
private static $inst;
public function setItems($value)
{
self::$_items = $value;
}
public function getItems()
{
return self::$_items;
}
public static function Instance()
{
if (self::$inst == null) {
self::$inst = new Items();
}
return self::$inst;
}
private function __clone()
{
}
private function __construct()
{
}
}
使用单例,仍然为空,也尝试使用单个值,而不是变量,没有运气
class PackingController extends Controller
{
protected static $i;
function GetPackings()
{
$s = sales::with('Customer')->where('salestype','=','3')->take(1000)->orderBy('receiptdaterequested','desc')->pluck('salesid','salesid');
$p = pack::distinct('APPACKINGGROUPID')->pluck('APPACKINGGROUPID','APPACKINGGROUPID')->all();
return \View::make('listas/index',compact('p','s'));
}
function Process(Request $request)
{
$r = new packing();
$v = $r->customer('Mexico','PVE0111998');
$items = $this->startProcess($v,false);
return \View::make('listas/print',compact('items'));
}
private function startProcess($dbitems, $ajust=false)
{
$bultos = 1;
$items = array();
foreach ($dbitems as $dbitem)
{
//Some process
$items[]=$item;
}
$s = Items::Instance();
if (count($items) > 0 ) {
$s->setItems($items);
}
return $items;
}
function printPdf()
{
$s = Items::Instance();
$s->getItems();
dd($s->getItems());
}
}
【问题讨论】:
-
self::$i = $items $items 是在哪里定义的还是 $dbitems?
-
$items 是$dbitems 进程的结果,是一个数组,我用singleton 尝试没有运气,我真的不明白