PetroFique, готов поспорить, что ты не реализовал MVC ни разу (вот именно настоящий MVC по Реенскаугу). И бизнес-логика у тебя наверняка в контроллерах, что в общем-то довольно частое явление для веб-разработки, но не единственно верное.
В $_SERVER['REMOTE_ADDR'] строка, а при сравнении строки '2' больше чем '100500', потому что они сравниваются посимвольно.
Примените https://www.php.net/manual/ru/function.ip2long.php и сравнивайте числа.
ivan_kholodov, это не ответ на "зачем". Возможно вам лучше сделать new Person(values) или defaultPerson.assign(values). Совсем непонятно зачем это делать именно вручную.