Using Javascript? Check out @stefanzweifel/js-swiss-cantons.
The easiest way to install the package is by using composer. The package requires PHP 8.2.
composer require "wnx/php-swiss-cantons"
Use the CantonManager
Class to interact with this package. Below you find an example how you can use with in the Laravel Framework. Further you find all public API methods for CantonManager
and Canton
.
<?php
use Wnx\SwissCantons\CantonManager;
$cantonManager = new CantonManager();
/** @var \Wnx\SwissCantons\Canton $canton */
$canton = $cantonManager->getByAbbreviation('zh');
$canton = $cantonManager->getByName('Zurigo');
$canton = $cantonManager->getByZipcode(8000);
// "Zürich"
$cantonName = $canton->setLanguage('de')->getName();
Use the CantonManager
to find a Canton. It will return a new Instance of Canton
or throws an Exception
if no Canton could be found for the abbreviation, name or zipcode.
Find a Canton by its abbreviation. See this list for available abbreviations.
$cantonManager = new Wnx\SwissCantons\CantonManager();
/** @var \Wnx\SwissCantons\Canton $canton */
$canton = $cantonManager->getByAbbreviation('GR');
Search for a Canton by its name. The name must exactly match one of the translations of the Canton (German, French, Italian, Romansh or English).
$cantonManager = new Wnx\SwissCantons\CantonManager();
/** @var \Wnx\SwissCantons\Canton $canton */
$canton = $cantonManager->getByName('Zürich');
Returns an array of possible Cantons for a given Zipcode. (Some zipcodes are shared between multiple Cantons).
$cantonManager = new Wnx\SwissCantons\CantonManager();
/** @var \Wnx\SwissCantons\Canton[] $cantons */
$cantons = $cantonManager->getByZipcode(3005);
Find Canton by a given zipcode and optionally by a city name.
$cantonManager = new Wnx\SwissCantons\CantonManager();
/** @var \Wnx\SwissCantons\Canton $canton */
$canton = $cantonManager->getByZipcodeAndCity(1003);
$canton = $cantonManager->getByZipcodeAndCity(1290, 'Lausanne');
Set the language, which should be used to display the name of the canton. The following languages are currently supported.
- German (
de
) - French (
fr
) - Italian (
it
) - Romansh (
rm
) - English (
en
, default)
The method returns the current instance of Canton
for easier method chaining.
$canton->setLanguage('rm');
$canton->setLanguage('fr')->getName();
Return the Name for the given Canton. If the method is used without calling the setLanguage()
method first, it will return the name in English.
$canton->getName(); // Grisons
$canton->setLanguage('de')->getName(); // Graubünden
Return the offical abbreviation for the given Canton.
$canton->getAbbreviation(); // e.g. ZH
This class is used internally but can also be used in your own project if you need a list of all cantons
Returns an array containg Wnx\SwissCantons\Canton
objects.
use Wnx\SwissCantons\Cantons;
$cantons = (new Cantons)->getAll();
Returns a one dimensionl array of all Cantons. The key is the abbreviation. The value will be the translated name of the Canton. The default language is English. Pass one of the valid languages to the method, to localize the names.
use Wnx\SwissCantons\Cantons;
$cantons = (new Cantons)->getAllAsArray('en');
$cantonsAsArray = $cantons->getAllAsArray();
// var_dump($cantonsAsArray);
// [
// 'ZH' => 'Zurich',
// 'GE' => 'Geneva',
// // ...
// ]
If you discover a security vulnerability within this package, please send an e-mail to stefan@stefanzweifel.dev. All security vulnerabilities will be promptly addressed.
We use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License - see the LICENSE file for details.