Vous êtes connecté en tant que anonymous Se Deconnecter
vendor/illuminate/view/Concerns/ManagesLoops.php
4f5a31d2
 <?php
 
 namespace Illuminate\View\Concerns;
 
 use Countable;
 use Illuminate\Support\Arr;
 
 trait ManagesLoops
 {
     /**
      * The stack of in-progress loops.
      *
      * @var array
      */
     protected $loopsStack = [];
 
     /**
      * Add new loop to the stack.
      *
      * @param  \Countable|array  $data
      * @return void
      */
     public function addLoop($data)
     {
         $length = is_array($data) || $data instanceof Countable ? count($data) : null;
 
         $parent = Arr::last($this->loopsStack);
 
         $this->loopsStack[] = [
             'iteration' => 0,
             'index' => 0,
             'remaining' => $length ?? null,
             'count' => $length,
             'first' => true,
             'last' => isset($length) ? $length == 1 : null,
             'odd' => false,
             'even' => true,
             'depth' => count($this->loopsStack) + 1,
             'parent' => $parent ? (object) $parent : null,
         ];
     }
 
     /**
      * Increment the top loop's indices.
      *
      * @return void
      */
     public function incrementLoopIndices()
     {
         $loop = $this->loopsStack[$index = count($this->loopsStack) - 1];
 
         $this->loopsStack[$index] = array_merge($this->loopsStack[$index], [
             'iteration' => $loop['iteration'] + 1,
             'index' => $loop['iteration'],
             'first' => $loop['iteration'] == 0,
             'odd' => ! $loop['odd'],
             'even' => ! $loop['even'],
             'remaining' => isset($loop['count']) ? $loop['remaining'] - 1 : null,
             'last' => isset($loop['count']) ? $loop['iteration'] == $loop['count'] - 1 : null,
         ]);
     }
 
     /**
      * Pop a loop from the top of the loop stack.
      *
      * @return void
      */
     public function popLoop()
     {
         array_pop($this->loopsStack);
     }
 
     /**
      * Get an instance of the last loop in the stack.
      *
      * @return \stdClass|null
      */
     public function getLastLoop()
     {
         if ($last = Arr::last($this->loopsStack)) {
             return (object) $last;
         }
     }
 
     /**
      * Get the entire loop stack.
      *
      * @return array
      */
     public function getLoopStack()
     {
         return $this->loopsStack;
     }
 }