Skip to content

Commit 3394d2a

Browse files
committed
Fixed a inconsistency in the namespace
1 parent 15ba289 commit 3394d2a

22 files changed

+276
-164
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ single-service-provider/
216216
│   │   │   └── IndexController.php
217217
│   │   └── routes.php
218218
│   ├── Models
219-
│   └── Services
219+
│   └── Providers
220220
│   ├── AbstractServiceProvider.php
221221
│   ├── ConfigServiceProvider.php
222222
│   ├── DatabaseServiceProvider.php

single-service-provider/app/Bootstrap.php

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Phalcon\Di;
66
use Phalcon\DiInterface;
77
use Phalcon\Mvc\Application;
8-
use App\Services\ServiceProviderInterface;
8+
use App\Providers\ServiceProviderInterface;
99

1010
/**
1111
* \App\Bootstrap
@@ -110,20 +110,29 @@ protected function getOutput()
110110
}
111111

112112
/**
113+
* Initialize Services in the Dependency Injector Container.
114+
*
113115
* @param string[] $providers
114116
*/
115117
protected function initializeServices(array $providers)
116118
{
117119
foreach ($providers as $name => $class) {
118-
$serviceProvider = new $class($name, $this->di);
119-
if (!$serviceProvider instanceof ServiceProviderInterface) {
120-
throw new \InvalidArgumentException(
121-
"The service '$name' must implement " . ServiceProviderInterface::class
122-
);
123-
}
124-
125-
$serviceProvider->register();
126-
$this->serviceProviders[$name] = $serviceProvider;
120+
$this->initializeService(new $class($this->di));
127121
}
128122
}
123+
124+
/**
125+
* Initialize the Service in the Dependency Injector Container.
126+
*
127+
* @param ServiceProviderInterface $serviceProvider
128+
*
129+
* @return $this
130+
*/
131+
protected function initializeService(ServiceProviderInterface $serviceProvider)
132+
{
133+
$serviceProvider->register();
134+
$this->serviceProviders[$serviceProvider->getName()] = $serviceProvider;
135+
136+
return $this;
137+
}
129138
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace App\Providers;
4+
5+
use Phalcon\DiInterface;
6+
use Phalcon\Mvc\User\Component;
7+
8+
/**
9+
* \App\Providers\AbstractServiceProvider
10+
*
11+
* @package App\Providers
12+
*/
13+
abstract class AbstractServiceProvider extends Component implements ServiceProviderInterface
14+
{
15+
/**
16+
* The Service name.
17+
* @var string
18+
*/
19+
protected $serviceName;
20+
21+
/**
22+
* AbstractServiceProvider constructor.
23+
*
24+
* @param DiInterface $di The Dependency Injector.
25+
*/
26+
public function __construct(DiInterface $di)
27+
{
28+
$this->setDI($di);
29+
}
30+
31+
/**
32+
* Gets the Service name.
33+
*
34+
* @return string
35+
*/
36+
public function getName()
37+
{
38+
return $this->serviceName;
39+
}
40+
}

single-service-provider/app/Services/ConfigServiceProvider.php renamed to single-service-provider/app/Providers/ConfigServiceProvider.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\Config;
66

77
/**
8-
* \App\Services\ConfigServiceProvider
8+
* \App\Providers\ConfigServiceProvider
99
*
10-
* @package App\Services
10+
* @package App\Providers
1111
*/
1212
class ConfigServiceProvider extends AbstractServiceProvider
1313
{
1414
/**
15-
* Initialize the Configuration.
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'config';
19+
20+
/**
21+
* Register application service.
1622
*
1723
* @return void
1824
*/

single-service-provider/app/Services/DatabaseServiceProvider.php renamed to single-service-provider/app/Providers/DatabaseServiceProvider.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\Db\Adapter\Pdo\Mysql;
66

77
/**
8-
* \App\Services\DatabaseServiceProvider
8+
* \App\Providers\DatabaseServiceProvider
99
*
10-
* @package App\Services
10+
* @package App\Providers
1111
*/
1212
class DatabaseServiceProvider extends AbstractServiceProvider
1313
{
1414
/**
15-
* Initialize the Database Connection.
16-
* Database connection is created based in the parameters defined in the configuration file.
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'database';
19+
20+
/**
21+
* Register application service.
1722
*
1823
* @return void
1924
*/

single-service-provider/app/Services/EscaperServiceProvider.php renamed to single-service-provider/app/Providers/EscaperServiceProvider.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\Escaper;
66

77
/**
8-
* \App\Services\EscaperServiceProvider
8+
* \App\Providers\EscaperServiceProvider
99
*
10-
* @package App\Services
10+
* @package App\Providers
1111
*/
1212
class EscaperServiceProvider extends AbstractServiceProvider
1313
{
1414
/**
15-
* Initialize the Escaper Service.
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'escaper';
19+
20+
/**
21+
* Register application service.
1622
*
1723
* @return void
1824
*/

single-service-provider/app/Services/EventManagerServiceProvider.php renamed to single-service-provider/app/Providers/EventManagerServiceProvider.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\Events\Manager;
66

77
/**
8-
* \App\Services\EventManagerServiceProvider
8+
* \App\Providers\EventManagerServiceProvider
99
*
10-
* @package App\Services
10+
* @package App\Providers
1111
*/
1212
class EventManagerServiceProvider extends AbstractServiceProvider
1313
{
1414
/**
15-
* Initialize the Events Manager.
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'eventsManager';
19+
20+
/**
21+
* Register application service.
1622
*
1723
* @return void
1824
*/

single-service-provider/app/Services/ModelsMetadataServiceProvider.php renamed to single-service-provider/app/Providers/ModelsMetadataServiceProvider.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\Mvc\Model\Metadata\Memory;
66

77
/**
8-
* \App\Services\ModelsMetadataServiceProvider
8+
* \App\Providers\ModelsMetadataServiceProvider
99
*
10-
* @package App\Services
10+
* @package App\Providers
1111
*/
1212
class ModelsMetadataServiceProvider extends AbstractServiceProvider
1313
{
1414
/**
15-
* Initialize the Metadata Adapter.
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'modelsMetadata';
19+
20+
/**
21+
* Register application service.
1622
*
1723
* @return void
1824
*/
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace App\Providers;
4+
5+
use Phalcon\Mvc\Dispatcher;
6+
7+
/**
8+
* \App\Providers\MvcDispatcherServiceProvider
9+
*
10+
* @package App\Providers
11+
*/
12+
class MvcDispatcherServiceProvider extends AbstractServiceProvider
13+
{
14+
/**
15+
* The Service name.
16+
* @var string
17+
*/
18+
protected $serviceName = 'dispatcher';
19+
20+
/**
21+
* This namespace is applied to the controller routes in your routes file.
22+
* @var string
23+
*/
24+
protected $namespace = 'App\Http\Controllers';
25+
26+
/**
27+
* Register application service.
28+
*
29+
* @return void
30+
*/
31+
public function register()
32+
{
33+
$namespace = $this->namespace;
34+
35+
$this->di->setShared(
36+
$this->serviceName,
37+
function () use ($namespace) {
38+
$dispatcher = new Dispatcher();
39+
$dispatcher->setDefaultNamespace($namespace);
40+
41+
return $dispatcher;
42+
}
43+
);
44+
}
45+
}

single-service-provider/app/Services/PhpTemplateEngineServiceProvider.php renamed to single-service-provider/app/Providers/PhpTemplateEngineServiceProvider.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
<?php
22

3-
namespace App\Services;
3+
namespace App\Providers;
44

55
use Phalcon\DiInterface;
66
use Phalcon\Mvc\ViewBaseInterface;
77
use Phalcon\Mvc\View\Engine\Php as PhpEngine;
88

99
/**
10-
* \App\Services\PhpTemplateEngineServiceProvider
10+
* \App\Providers\PhpTemplateEngineServiceProvider
1111
*
12-
* @package App\Services
12+
* @package App\Providers
1313
*/
1414
class PhpTemplateEngineServiceProvider extends AbstractServiceProvider
1515
{
1616
/**
17-
* Initialize the Php Template Engine.
18-
* Generate Template files uses PHP itself as the template engine.
17+
* The Service name.
18+
* @var string
19+
*/
20+
protected $serviceName = 'phpEngine';
21+
22+
/**
23+
* Register application service.
1924
*
2025
* @return void
2126
*/

0 commit comments

Comments
 (0)