From ffb8bb49395222fd0aca8c4bd8ca6948613504e7 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 9 Jan 2019 10:59:26 +0000 Subject: [PATCH 1/5] Initial commit --- autowire_example.info.yml | 3 +++ autowire_example.module | 9 +++++++++ autowire_example.services.yml | 5 +++++ src/Service/ExampleService.php | 29 +++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 autowire_example.info.yml create mode 100644 autowire_example.module create mode 100644 autowire_example.services.yml create mode 100644 src/Service/ExampleService.php diff --git a/autowire_example.info.yml b/autowire_example.info.yml new file mode 100644 index 0000000..ab2bd93 --- /dev/null +++ b/autowire_example.info.yml @@ -0,0 +1,3 @@ +name: Foo +type: module +core: 8.x diff --git a/autowire_example.module b/autowire_example.module new file mode 100644 index 0000000..67b1b15 --- /dev/null +++ b/autowire_example.module @@ -0,0 +1,9 @@ +__invoke(); +} diff --git a/autowire_example.services.yml b/autowire_example.services.yml new file mode 100644 index 0000000..6a1bfc2 --- /dev/null +++ b/autowire_example.services.yml @@ -0,0 +1,5 @@ +services: + autowire_example.test: + class: Drupal\autowire_example\Service\ExampleService + arguments: + - '@current_user' diff --git a/src/Service/ExampleService.php b/src/Service/ExampleService.php new file mode 100644 index 0000000..70f7616 --- /dev/null +++ b/src/Service/ExampleService.php @@ -0,0 +1,29 @@ +currentUser = $current_user; + } + + public function __invoke() { + dump($this->currentUser->id()); + die; + } + +} From 899c89645555c46400801beecffdfac80a57c0cc Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 9 Jan 2019 14:13:07 +0000 Subject: [PATCH 2/5] Initial commit --- README.md | 4 +++ autowire_example.info.yml | 5 +++ autowire_example.routing.yml | 6 ++++ autowire_example.services.yml | 6 ++++ src/Controller/ExampleController.php | 48 ++++++++++++++++++++++++++++ src/Service/UserCounter.php | 46 ++++++++++++++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 README.md create mode 100644 autowire_example.info.yml create mode 100644 autowire_example.routing.yml create mode 100644 autowire_example.services.yml create mode 100644 src/Controller/ExampleController.php create mode 100644 src/Service/UserCounter.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..4f9e9bc --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Autowire Example + +An example module to demonstrate autowiring service classes in Drupal 8, as +well as how to define Controllers as Services. diff --git a/autowire_example.info.yml b/autowire_example.info.yml new file mode 100644 index 0000000..a14949b --- /dev/null +++ b/autowire_example.info.yml @@ -0,0 +1,5 @@ +name: 'Autowire Example' +type: module +description: 'An example module to demonstrate autowiring in Drupal 8.' +core: 8.x +package: 'Example modules' diff --git a/autowire_example.routing.yml b/autowire_example.routing.yml new file mode 100644 index 0000000..7883ef4 --- /dev/null +++ b/autowire_example.routing.yml @@ -0,0 +1,6 @@ +autowire_example.user_count: + path: '/user-count' + defaults: + _controller: 'Drupal\autowire_example\Controller\ExampleController::__invoke' + requirements: + _access: 'TRUE' diff --git a/autowire_example.services.yml b/autowire_example.services.yml new file mode 100644 index 0000000..edab41d --- /dev/null +++ b/autowire_example.services.yml @@ -0,0 +1,6 @@ +services: + Drupal\autowire_example\Service\UserCounter: + autowire: true + + Drupal\autowire_example\Controller\ExampleController: + autowire: true diff --git a/src/Controller/ExampleController.php b/src/Controller/ExampleController.php new file mode 100644 index 0000000..b945018 --- /dev/null +++ b/src/Controller/ExampleController.php @@ -0,0 +1,48 @@ +userCounter = $user_counter; + } + + /** + * Display the username of the current user. + * + * @return array + * A render array. + */ + public function __invoke() { + return [ + '#markup' => $this->formatPlural( + number_format($this->userCounter->getActiveUserCount()), + 'This site has 1 active user.', + 'This site has @count active users.' + ) + ]; + } + +} diff --git a/src/Service/UserCounter.php b/src/Service/UserCounter.php new file mode 100644 index 0000000..d4edc15 --- /dev/null +++ b/src/Service/UserCounter.php @@ -0,0 +1,46 @@ +userStorage = $entity_type_manager->getStorage('user'); + } + + /** + * Count the active users. + * + * @return integer + * The number of active users. + */ + public function getActiveUserCount() { + return (int) $this->userStorage + ->getQuery() + ->condition('status', 1) + ->count() + ->execute(); + } + +} From d5e210109dba6345800deb7fb418237c61c4eaaf Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 9 Jan 2019 23:39:35 +0000 Subject: [PATCH 3/5] Add entity_type.manager alias to services --- autowire_example.services.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/autowire_example.services.yml b/autowire_example.services.yml index edab41d..5ab82c0 100644 --- a/autowire_example.services.yml +++ b/autowire_example.services.yml @@ -1,4 +1,7 @@ services: + Drupal\Core\Entity\EntityTypeManagerInterface: + alias: entity_type.manager + Drupal\autowire_example\Service\UserCounter: autowire: true From 9c3872bf783ab772808baab7c675390b0201b2f0 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 9 Jan 2019 23:39:42 +0000 Subject: [PATCH 4/5] Add UserCounterTest --- tests/src/Kernel/Service/UserCounterTest.php | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 tests/src/Kernel/Service/UserCounterTest.php diff --git a/tests/src/Kernel/Service/UserCounterTest.php b/tests/src/Kernel/Service/UserCounterTest.php new file mode 100644 index 0000000..92fa881 --- /dev/null +++ b/tests/src/Kernel/Service/UserCounterTest.php @@ -0,0 +1,50 @@ +userCounter = $this->container->get(UserCounter::class); + } + + /** @test */ + public function active_users_are_counted() { + $this->createUser(['status' => 1]); + $this->createUser(['status' => 1]); + + $this->assertEquals(2, $this->userCounter->getActiveUserCount()); + } + + /** @test */ + public function blocked_users_are_not_counted() { + $this->createUser(['status' => 1]); + $this->createUser(['status' => 0]); + + $this->assertEquals(1, $this->userCounter->getActiveUserCount()); + } + +} From c936d36e1318853caa12517124cd622b42596fe6 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 9 Jan 2019 23:44:43 +0000 Subject: [PATCH 5/5] Re-order services --- autowire_example.services.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/autowire_example.services.yml b/autowire_example.services.yml index 5ab82c0..3582c33 100644 --- a/autowire_example.services.yml +++ b/autowire_example.services.yml @@ -2,8 +2,8 @@ services: Drupal\Core\Entity\EntityTypeManagerInterface: alias: entity_type.manager - Drupal\autowire_example\Service\UserCounter: - autowire: true - Drupal\autowire_example\Controller\ExampleController: autowire: true + + Drupal\autowire_example\Service\UserCounter: + autowire: true