get() public method

public get ( $countryCode )
 /**
  * Checks whether predefined subdivisions exist for the provided parents.
  *
  * @param array $parents The parents (country code, subdivision codes).
  *
  * @return bool TRUE if predefined subdivisions exist for the provided
  *              parents, FALSE otherwise.
  */
 protected function hasData(array $parents)
 {
     $countryCode = $parents[0];
     $addressFormat = $this->addressFormatRepository->get($countryCode);
     $depth = $addressFormat->getSubdivisionDepth();
     if ($depth == 0) {
         return false;
     }
     // At least the first level has data.
     $hasData = true;
     if (count($parents) > 1) {
         // After the first level it is possible for predefined subdivisions
         // to exist at a given level, but not for that specific parent.
         // That's why the parent definition has the most precise answer.
         $grandparents = $parents;
         $parentId = array_pop($grandparents);
         $parentGroup = $this->buildGroup($grandparents);
         if (isset($this->definitions[$parentGroup]['subdivisions'][$parentId])) {
             $definition = $this->definitions[$parentGroup]['subdivisions'][$parentId];
             $hasData = !empty($definition['has_children']);
         } else {
             // The parent definition wasn't loaded previously, fallback
             // to guessing based on depth.
             $neededDepth = count($parents);
             $hasData = $neededDepth <= $depth;
         }
     }
     return $hasData;
 }
$validator = Validation::createValidator();
// Create a list of countries for which Google has definitions.
$foundCountries = ['ZZ'];
$countryRepository = new CountryRepository();
$countries = $countryRepository->getList();
$serviceUrl = 'http://i18napis.appspot.com/address';
$index = file_get_contents($serviceUrl);
foreach ($countries as $countryCode => $countryName) {
    $link = "<a href='/address/data/{$countryCode}'>";
    // This is still faster than running a file_exists() for each country code.
    if (strpos($index, $link) !== FALSE) {
        $foundCountries[] = $countryCode;
    }
}
foreach ($foundCountries as $countryCode) {
    $addressFormat = $addressFormatRepository->get($countryCode);
    if (!in_array(AddressField::POSTAL_CODE, $addressFormat->getUsedFields())) {
        continue;
    }
    $definition = file_get_contents('raw/' . $countryCode . '.json');
    $definition = json_decode($definition, TRUE);
    // If country definition has zip examples, check if they pass validation.
    if (isset($definition['zipex'])) {
        $zipExamples = explode(',', $definition['zipex']);
        $address = $address->withCountryCode($countryCode);
        foreach ($zipExamples as $zipExample) {
            if (strpos($zipExample, ':') !== FALSE) {
                // Ignore ranges for now, the non-range examples are enough.
                continue;
            }
            $address = $address->withPostalCode($zipExample);
 /**
  * @covers ::get
  *
  * @expectedException \InvalidArgumentException
  * @expectedExceptionMessage Invalid country code "Kitten" provided.
  */
 public function testGetInvalidAddressFormat()
 {
     $addressFormatRepository = new AddressFormatRepository();
     $addressFormat = $addressFormatRepository->get('Kitten');
 }