titled = $config['titled'] ?? $this; // Initialization $this->setTitle( $config['title'] ?? null ); $this->registerConfigCallback( function ( &$config ) { if ( $this->title !== null ) { $config['title'] = $this->title; } } ); } /** * Set title. * * @param string|null $title Title text or null for browser default title, which is no title for * most elements. * @return $this */ public function setTitle( $title ) { if ( $this->title !== $title ) { $this->title = $title; $this->updateTitle(); } return $this; } /** * Update the title attribute, in case of changes to title or accessKey. * * @return $this */ protected function updateTitle() { $title = $this->getTitle(); if ( $title !== null ) { // Only if this is an AccessKeyedElement if ( method_exists( $this, 'formatTitleWithAccessKey' ) ) { $title = $this->formatTitleWithAccessKey( $title ); } $this->titled->setAttributes( [ 'title' => $title ] ); } else { $this->titled->removeAttributes( [ 'title' ] ); } return $this; } /** * Get title. * * @return string Title string */ public function getTitle() { return $this->title; } }