1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php namespace Laravel;
- class Section {
- /**
- * All of the captured sections.
- *
- * @var array
- */
- public static $sections = array();
- /**
- * The last section on which injection was started.
- *
- * @var array
- */
- protected static $last = array();
- /**
- * Start injecting content into a section.
- *
- * <code>
- * // Start injecting into the "header" section
- * Section::start('header');
- *
- * // Inject a raw string into the "header" section without buffering
- * Section::start('header', '<title>Laravel</title>');
- * </code>
- *
- * @param string $section
- * @param string|Closure $content
- * @return void
- */
- public static function start($section, $content = '')
- {
- if ($content === '') ob_start() and static::$last[] = $section;
- static::append($section, $content);
- }
- /**
- * Inject inline content into a section.
- *
- * This is helpful for injecting simple strings such as page titles.
- *
- * <code>
- * // Inject inline content into the "header" section
- * Section::inject('header', '<title>Laravel</title>');
- * </code>
- *
- * @param string $section
- * @param string $content
- * @return void
- */
- public static function inject($section, $content)
- {
- static::start($section, $content);
- }
- /**
- * Stop injecting content into a section.
- *
- * @return void
- */
- public static function stop()
- {
- static::append(array_pop(static::$last), ob_get_clean());
- }
- /**
- * Append content to a given section.
- *
- * @param string $section
- * @param string $content
- * @return void
- */
- protected static function append($section, $content)
- {
- if (isset(static::$sections[$section]))
- {
- $content = static::$sections[$section].PHP_EOL.$content;
- }
- static::$sections[$section] = $content;
- }
- /**
- * Get the string contents of a section.
- *
- * @param string $section
- * @return string
- */
- public static function yield($section)
- {
- return (isset(static::$sections[$section])) ? static::$sections[$section] : '';
- }
- }
|