Laravel控制器静态变量始终为null

时间:2018-07-03 14:40:40

标签: laravel variables static

我试图声明一个静态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());
        }
    }

1 个答案:

答案 0 :(得分:1)

为什么要声明一个静态var或 singleton methods之间传递值? 也许您应该尝试在会话中保存数据:

session()->set('items',$dbtitems);

然后...

$items = session()->get('items);