diff --git a/core/lib/Drupal/Core/Controller/ControllerBase.php b/core/lib/Drupal/Core/Controller/ControllerBase.php index 618bfee054971641010ec7ad04cbb51af0d6eb79..96828fa5837f1a14f52bf97cbd3ea8b3763f8da5 100644 --- a/core/lib/Drupal/Core/Controller/ControllerBase.php +++ b/core/lib/Drupal/Core/Controller/ControllerBase.php @@ -265,10 +265,15 @@ protected function languageManager() { /** * Returns the service container. * + * This method is marked private to prevent sub-classes from retrieving + * services from the container through it. Instead, + * \Drupal\Core\DependencyInjection\ContainerInjectionInterface should be used + * for injecting services. + * * @return \Symfony\Component\DependencyInjection\ContainerInterface $container * The service container. */ - protected function container() { + private function container() { return \Drupal::getContainer(); } diff --git a/core/lib/Drupal/Core/Form/FormBase.php b/core/lib/Drupal/Core/Form/FormBase.php index 3dfd81c0a9e47e98e4c7ca1dab5434e9378db087..35da106b2f3ea7a41978b6aab129861a32025a9f 100644 --- a/core/lib/Drupal/Core/Form/FormBase.php +++ b/core/lib/Drupal/Core/Form/FormBase.php @@ -214,10 +214,15 @@ public function setUrlGenerator(UrlGeneratorInterface $url_generator) { /** * Returns the service container. * + * This method is marked private to prevent sub-classes from retrieving + * services from the container through it. Instead, + * \Drupal\Core\DependencyInjection\ContainerInjectionInterface should be used + * for injecting services. + * * @return \Symfony\Component\DependencyInjection\ContainerInterface $container * The service container. */ - protected function container() { + private function container() { return \Drupal::getContainer(); } diff --git a/core/modules/system/tests/modules/error_test/lib/Drupal/error_test/Controller/ErrorTestController.php b/core/modules/system/tests/modules/error_test/lib/Drupal/error_test/Controller/ErrorTestController.php index 052bd5af573a9b39d2f68df7baa69f0391da571e..d2a7dfc3a51b4d878a17bb91a82ec1568dcc1369 100644 --- a/core/modules/system/tests/modules/error_test/lib/Drupal/error_test/Controller/ErrorTestController.php +++ b/core/modules/system/tests/modules/error_test/lib/Drupal/error_test/Controller/ErrorTestController.php @@ -7,12 +7,40 @@ namespace Drupal\error_test\Controller; use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Database\Connection; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Controller routines for error_test routes. */ +class ErrorTestController extends ControllerBase implements ContainerInjectionInterface { -class ErrorTestController extends ControllerBase { + /** + * The database connection. + * + * @var \Drupal\Core\Database\Connection; + */ + protected $database; + + /** + * Constructs a \Drupal\error_test\Controller\ErrorTestController object. + * + * @param \Drupal\Core\Database\Connection $database + * The database connection. + */ + public function __construct(Connection $database) { + $this->database = $database; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('database') + ); + } /** * Generate warnings to test the error handler. @@ -42,7 +70,7 @@ public function triggerException() { */ public function triggerPDOException() { define('SIMPLETEST_COLLECT_ERRORS', FALSE); - $this->container()->get('database')->query('SELECT * FROM bananas_are_awesome'); + $this->database->query('SELECT * FROM bananas_are_awesome'); } }