From 05b65b8a8c33efc48907e1a9897c3b28dad5ad53 Mon Sep 17 00:00:00 2001
From: webchick <webchick@24967.no-reply.drupal.org>
Date: Mon, 6 Jan 2014 11:13:56 -0800
Subject: [PATCH] Issue #2110643 by amateescu, dawehner:
 ControllerBase::container() and FormBase::container() needs to be private.

---
 .../Drupal/Core/Controller/ControllerBase.php |  7 +++-
 core/lib/Drupal/Core/Form/FormBase.php        |  7 +++-
 .../Controller/ErrorTestController.php        | 32 +++++++++++++++++--
 3 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/core/lib/Drupal/Core/Controller/ControllerBase.php b/core/lib/Drupal/Core/Controller/ControllerBase.php
index 618bfee05497..96828fa5837f 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 3dfd81c0a9e4..35da106b2f3e 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 052bd5af573a..d2a7dfc3a51b 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');
   }
 
 }
-- 
GitLab