我试图声明一个静态var,但始终为null,我尝试了几种组合和方法,但没有碰到运气。我正在尝试存储包含一些数据的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()
{
}
}
使用单例,仍为null,也尝试使用单个值而不是变量,但没有运气
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());
}
}
答案 0 :(得分:1)
为什么要声明一个静态var或 singleton 在methods之间传递值? 也许您应该尝试在会话中保存数据:
session()->set('items',$dbtitems);
然后...
$items = session()->get('items);