1<?php 2namespace TYPO3\CMS\Frontend\ContentObject; 3 4/* 5 * This file is part of the TYPO3 CMS project. 6 * 7 * It is free software; you can redistribute it and/or modify it under 8 * the terms of the GNU General Public License, either version 2 9 * of the License, or any later version. 10 * 11 * For the full copyright and license information, please read the 12 * LICENSE.txt file that was distributed with this source code. 13 * 14 * The TYPO3 project - inspiring people to share! 15 */ 16 17use TYPO3\CMS\Core\Page\PageRenderer; 18use TYPO3\CMS\Core\Utility\GeneralUtility; 19 20/** 21 * Contains an abstract class for all tslib content class implementations. 22 */ 23abstract class AbstractContentObject 24{ 25 /** 26 * @var ContentObjectRenderer 27 */ 28 protected $cObj; 29 30 /** 31 * @var PageRenderer 32 */ 33 protected $pageRenderer; 34 35 /** 36 * Default constructor. 37 * 38 * @param ContentObjectRenderer $cObj 39 */ 40 public function __construct(ContentObjectRenderer $cObj) 41 { 42 $this->cObj = $cObj; 43 } 44 45 /** 46 * Renders the content object. 47 * 48 * @param array $conf 49 * @return string 50 */ 51 abstract public function render($conf = []); 52 53 /** 54 * Getter for current ContentObjectRenderer 55 * 56 * @return ContentObjectRenderer 57 */ 58 public function getContentObjectRenderer() 59 { 60 return $this->cObj; 61 } 62 63 /** 64 * @return PageRenderer 65 */ 66 protected function getPageRenderer() 67 { 68 if ($this->pageRenderer === null) { 69 $this->pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); 70 } 71 72 return $this->pageRenderer; 73 } 74} 75