add to Sf demo the overtaking of the logger
authorgggeek <giunta.gaetano@gmail.com>
Tue, 31 Jan 2023 20:05:44 +0000 (20:05 +0000)
committergggeek <giunta.gaetano@gmail.com>
Tue, 31 Jan 2023 20:05:44 +0000 (20:05 +0000)
demo/client/symfony/ClientController.php
demo/client/symfony/services.yaml
demo/server/symfony/ServerController.php
demo/server/symfony/services.yaml

index b42ed0d..38832b1 100644 (file)
@@ -3,20 +3,28 @@
 namespace App\Controller;
 
 use PhpXmlRpc\Client;
+use PhpXmlRpc\PhpXmlRpc;
 use PhpXmlRpc\Request;
 use PhpXmlRpc\Value;
+use Psr\Log\LoggerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Exception\HttpException;
 use Symfony\Component\Routing\Annotation\Route;
 
+/**
+ * An example usage of the xml-rpc client, configured as a service, from within a Symfony controller
+ */
 class ClientController extends AbstractController
 {
     protected $client;
 
-    public function __construct(Client $client)
+    public function __construct(Client $client, LoggerInterface $logger = null)
     {
         $this->client = $client;
+        if ($logger) {
+            PhpXmlRpc::setLogger($logger);
+        }
     }
 
     #[Route('/getStateName/{stateNo}', name: 'getstatename', methods: ['GET'])]
index f97690e..6f1914a 100644 (file)
@@ -15,3 +15,5 @@ services:
     App\Controller\ClientController:
         arguments:
             $client: '@App\Service\XmlRpcClient'
+            # in case you want to use a dedicated log file for all xml-rpc related stuff
+            #$logger: '@monolog.logger.xmlrpc'
index 80a0c8a..6c8ee39 100644 (file)
@@ -2,7 +2,9 @@
 
 namespace App\Controller;
 
+use PhpXmlRpc\PhpXmlRpc;
 use PhpXmlRpc\Server;
+use Psr\Log\LoggerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Routing\Annotation\Route;
@@ -11,13 +13,16 @@ class ServerController extends AbstractController
 {
     protected $server;
 
-    public function __construct(Server $server)
+    public function __construct(Server $server, LoggerInterface $logger = null)
     {
         $this->server = $server;
+        if ($logger) {
+            PhpXmlRpc::setLogger($logger);
+        }
     }
 
     # This single method serves ALL the xml-rpc requests.
-    # The configuration for which xml-rpc methods exist and how they are handled is carried out in the Server service
+    # The configuration for which xml-rpc methods exist and how they are handled is carried out in the Server service definition
     #[Route('/xmlrpc', name: 'xml_rpc', methods: ['POST'])]
     public function serve(): Response
     {
index 79e7010..60abead 100644 (file)
@@ -2,7 +2,7 @@ parameters:
     xml_rpc_server_options: []
 
 services:
-    # explicitly configure the services
+    # explicitly configure the services where autowiring is impossible
 
     App\Service\CommentManager:
         class: CommentManager
@@ -29,3 +29,5 @@ services:
     App\Controller\ServerController:
         arguments:
             $server: '@App\Service\XmlRpcServer'
+            # in case you want to use a dedicated log file for all xml-rpc related stuff
+            #$logger: '@monolog.logger.xmlrpc'