titled = isset( $config['titled'] ) ? $config['titled'] : $this; // Initialization $this->setTitle( isset( $config['title'] ) ? $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 no title * @return $this */ public function setTitle( $title ) { $title = $title !== '' ? $title : null; 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; } }