/** * Parse a class based composer name. * * @param string $class * @param string $prefix * @return array */ protected function parseClassEvent($class, $prefix) {//Parse a class based composer name. if (Str::contains($class, ‘@‘)) { return explode(‘@‘, $class); }// this is contains type $method = Str::contains($prefix, ‘composing‘) ? ‘compose‘ : ‘create‘;// get method from prefix return [$class, $method];// return a array combine by class and method } /** * Call the composer for a given view. * * @param \Illuminate\Contracts\View\View $view * @return void */ public function callComposer(View $view) { $this->events->fire(‘composing: ‘.$view->getName(), [$view]);// start a view }//call the composer for a given view /** * Call the creator for a given view. * * @param \Illuminate\Contracts\View\View $view * @return void */ public function callCreator(View $view) { $this->events->fire(‘creating: ‘.$view->getName(), [$view]);//fire the creating }// call the creator for a given view. /** * Start injecting content into a section. * * @param string $section * @param string $content * @return void */ public function startSection($section, $content = ‘‘) {//start injecting content into a section if ($content === ‘‘) {// if null to get the content if (ob_start()) { $this->sectionStack[] = $section; } } else { $this->extendSection($section, $content);// set the extend } } /** * Inject inline content into a section. * * @param string $section * @param string $content * @return void */ public function inject($section, $content) { return $this->startSection($section, $content);// inject content to section }//Inject inline content into a section. // inject something to a object /** * Stop injecting content into a section and return its contents. * * @return string */ public function yieldSection() {// return the inject if (empty($this->sectionStack)) { return ‘‘; }// if all just null // inject itself return $this->yieldContent($this->stopSection()); // first to inject the Section // and yield it }// else stop inject this contents /** * Stop injecting content into a section. * * @param bool $overwrite * @return string * @throws \InvalidArgumentException */ public function stopSection($overwrite = false) {// stop injecting content into a section if (empty($this->sectionStack)) { throw new InvalidArgumentException(‘Cannot end a section without first starting one.‘); }// if the container is null $last = array_pop($this->sectionStack);// get this last options if ($overwrite) {// if overwrite $this->sections[$last] = ob_get_clean();// rewrite it } else { $this->extendSection($last, ob_get_clean());// add and append } return $last; }// return this last thing // stop just like to get it back /** * Stop injecting content into a section and append it. * * @return string * @throws \InvalidArgumentException */ public function appendSection() {//Stop injecting content into a section and append it if (empty($this->sectionStack)) { throw new InvalidArgumentException(‘Cannot end a section without first starting one.‘); }// null $last = array_pop($this->sectionStack);// last thing if (isset($this->sections[$last])) { $this->sections[$last] .= ob_get_clean(); } else { $this->sections[$last] = ob_get_clean(); }// this last return $last;// return }// i think stop this world is not too good /** * Append content to a given section. * * @param string $section * @param string $content * @return void */ protected function extendSection($section, $content) { if (isset($this->sections[$section])) { $content = str_replace(‘@parent‘, $content, $this->sections[$section]); }// set the section // like get the key,to unlock this thing $this->sections[$section] = $content;// set te sections }//Append content to a given section /** * Get the string contents of a section. * * @param string $section * @param string $default * @return string */ public function yieldContent($section, $default = ‘‘) {//Get the string contents of a section. $sectionContent = $default;// set the default if (isset($this->sections[$section])) { $sectionContent = $this->sections[$section]; }// level 2 to set it again,like a bitch, or right? $sectionContent = str_replace(‘@@parent‘, ‘--parent--holder--‘, $sectionContent);//get you want surface return str_replace( ‘--parent--holder--‘, ‘@parent‘, str_replace(‘@parent‘, ‘‘, $sectionContent) );// return a str_replace the } /** * Flush all of the section contents. * * @return void */ public function flushSections() { $this->renderCount = 0;//set render $this->sections = [];// set sections $this->sectionStack = [];// set this store }//Flush all of the section contents /** * Flush all of the section contents if done rendering. * * @return void */ public function flushSectionsIfDoneRendering() { if ($this->doneRendering()) { $this->flushSections(); }// something }//Flush all of the section contents if done rendering // flush render /** * Increment the rendering counter. * * @return void */ public function incrementRender() { $this->renderCount++;// plus and plus }// Increment the rendering counter /** * Decrement the rendering counter. * * @return void */ public function decrementRender() { $this->renderCount--;// reduce this count }// /** * Check if there are no active render operations. * * @return bool */ public function doneRendering() { return $this->renderCount == 0; }// donRendering to init this count /** * Add a location to the array of view locations. * * @param string $location * @return void */ public function addLocation($location) { $this->finder->addLocation($location);//add Location }//Add a location to the array of view locations /** * Add a new namespace to the loader. * * @param string $namespace * @param string|array $hints * @return void */ public function addNamespace($namespace, $hints) { $this->finder->addNamespace($namespace, $hints);// add Name space }//Add a new namespace to the loader /** * Prepend a new namespace to the loader. * * @param string $namespace * @param string|array $hints * @return void */ public function prependNamespace($namespace, $hints) { $this->finder->prependNamespace($namespace, $hints);// prepend }// Prepend a new namespace to te loader /** * Register a valid view extension and its engine. * * @param string $extension * @param string $engine * @param \Closure $resolver * @return void */ public function addExtension($extension, $engine, $resolver = null) {// Register a valid view extension and its engine. $this->finder->addExtension($extension);// add Extension if (isset($resolver)) {// set the resolver $this->engines->register($engine, $resolver); }// set the register unset($this->extensions[$extension]);// unset the extension $this->extensions = array_merge([$extension => $engine], $this->extensions); }// this extensions /** * Get the extension to engine bindings. * * @return array */ public function getExtensions() { return $this->extensions; }// Get the extension to engine bindings /** * Get the engine resolver instance. * * @return \Illuminate\View\Engines\EngineResolver */ public function getEngineResolver() { return $this->engines; }//Get the engine resolver instance /** * Get the view finder instance. * * @return \Illuminate\View\ViewFinderInterface */ public function getFinder() { return $this->finder; }//Get the view finder instance. /** * Set the view finder instance. * * @param \Illuminate\View\ViewFinderInterface $finder * @return void */ public function setFinder(ViewFinderInterface $finder) { $this->finder = $finder; }//set Finder /** * Get the event dispatcher instance. * * @return \Illuminate\Contracts\Events\Dispatcher */ public function getDispatcher() { return $this->events; }//get Dispatcher /** * Set the event dispatcher instance. * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function setDispatcher(Dispatcher $events) { $this->events = $events; }//set instance /** * Get the IoC container instance. * * @return \Illuminate\Contracts\Container\Container */ public function getContainer() { return $this->container; }//get Container /** * Set the IoC container instance. * * @param \Illuminate\Contracts\Container\Container $container * @return void */ public function setContainer(Container $container) { $this->container = $container; }//set Container /** * Get an item from the shared data. * * @param string $key * @param mixed $default * @return mixed */ public function shared($key, $default = null) { return Arr::get($this->shared, $key, $default); }//shared //Arr::get /** * Get all of the shared data for the environment. * * @return array */ public function getShared() { return $this->shared; }// get Shared /** * Check if section exists. * * @param string $name * @return bool */ public function hasSection($name) { return array_key_exists($name, $this->sections); }// has Section /** * Get the entire array of sections. * * @return array */ public function getSections() { return $this->sections; }// get Sections /** * Get all of the registered named views in environment. * * @return array */ public function getNames() { return $this->names; }// return name }
时间: 2024-11-08 04:07:11