Why would you write such code though? If you want to store an underlying properly, use a differently named (and private) one:
public string $countryCode { set (string $countryCode) { $this->_countryCode = strtoupper($countryCode); $this->country = nameCountry($this->_countryCode); }