jguittard / zf-geocoder
Geocoder Service module for Zend Framework
Requires
- php: 5.6 || ^7.0
- php-http/httplug: ^0.1.0
- willdurand/geocoder: ^3.3
- zendframework/zend-config: ^2.6
- zendframework/zend-filter: ^2.7
- zendframework/zend-http: ^2.5
- zendframework/zend-i18n: ^2.7
- zendframework/zend-serializer: ^2.7
- zendframework/zend-servicemanager: ^2.7.5 || ^3.0.3
- zendframework/zend-stdlib: ^2.7 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.12
- phpunit/phpunit: ~5.5
- squizlabs/php_codesniffer: ~2.3.4
- zendframework/zend-log: ^2.7
- zendframework/zend-test: ~3.0
This package is not auto-updated.
Last update: 2024-12-21 21:20:00 UTC
README
This package allows you to use Geocoder in Zend Framework.
It is still compatible with Zend Framework 2 and 3 Service Manager.
Requirements
Please see the composer.json file.
Installation
Run the following composer
command:
$ composer require "jguittard/zf-geocoder:~1.0"
Alternately, manually add the following to your composer.json
, in the require
section:
"require": { "jguittard/zf-geocoder": "~1.0" }
And then run composer update
to ensure the module is installed.
Finally, add the module name to your project's config/application.config.php
under the modules
key:
return array( /* ... */ 'modules' => array( /* ... */ 'ZF\Geocoder', ), /* ... */ );
Or rely on Zend Component Installer to inject this module automatically
composer require zendframework/zend-composer-installer:^0.4
Configuration
Copy the config/zf.geocoder.local.php.dist
to the config/autoload
directory and remove the dist
extension to jump start configuration.
Usage
You can retrieve Geocoder documentation
The following will handle setup and service management within this Zend Framework module.
First, make sure you have set up your configuration file by commenting out the provider(s) you'd like to use.
For example, in config/autoload/zf.geocoder.local.php
:
return [ 'geocoder' => [ 'httpAdapter' => '<SERVICE_KEY_OF_HTTP_ADAPTER>', 'providers' => [ 'google_maps' => [ 'locale' => 'fr_FR', 'region' => 'Île-de-France', 'useSsl' => false, ], ], ], ];
Every provider is exposed as a service in the main Service Manager following the convention: Geocoder\<PROVIDER_NAME_IN_CAMELCASE>
Such service will be an instance of corresponding Geocoder\Provider\<PROVIDER_NAME_IN_CAMELCASE>
with appropriate configuration passed to its constructor
For example, in your controller:
public function localeAction() { /* ... */ $geocoder = $this->getServiceLocator()->get('Geocoder\GoogleMaps'); $addressCollection = $geocoder->geocode('10 avenue Gambetta, Paris, France'); /* ... */ }
Obviously, such a call is bad practice. You should consider injecting your Geocoder service in a dedicated service, not call it from a controller
Unit tests
Make sure dev
dependencies are installed
composer install --dev
Run the unit tests
composer test
Code styling check
composer cs-check
Check both
composer check