/** * Склоняет слово <var>$word</var> по нужным правилам в зависимости от пола и типа слова * @param NCLNameCaseWord $word слово, которое нужно просклонять */ private function WordCase(NCLNameCaseWord $word) { $gender = $word->gender() == NCL::$MAN ? 'man' : 'woman'; $namepart = ''; switch ($word->getNamePart()) { case 'F': $namepart = 'Father'; break; case 'N': $namepart = 'First'; break; case 'S': $namepart = 'Second'; break; } $method = $gender . $namepart . 'Name'; $this->setWorkingWord($word->getWord()); if ($this->{$method}()) { $word->setNameCases($this->lastResult); $word->setRule($this->lastRule); } else { $word->setNameCases(array_fill(0, $this->CaseCount, $word->getWord())); $word->setRule(-1); } }