Как я сказал в комментариях, я действительно предпочел бы использовать базу данных.Это более гибкий и перспективный .Вы можете иметь таблицу country
, которая содержит идентификатор, код ISO и все, что вы хотите, другую таблицу country_lang
, которая содержит переводы названий стран.При этом ваш код остается прежним и работает одинаково, обновление не требуется.
Но если вы действительно хотите сохранить страны в переменной без базы данных, вы можете использовать множество решений в соответствии сваша потребность.
1 - Обычная старая константа
Если вы используете PHP 7.0 + , вы можете использовать простую старую константу.
<?php
define('COUNTRIES', ['a', 'b']);
var_dump(COUNTRIES);
Плюсы :
- Если определено во фронт-контроллере или любом глобальном файле, константа доступна везде в приложении.
- Поскольку вы являетесь константой, выНе будучи уверенным в его целостности во время выполнения, ни один метод не может обновить его значение.
Минусы :
- Это не , ориентированное на будущее, если однажды вы захотите добавить информацию об этом (например, переводы или коды ISO), это будет довольно сложно.
- Если вы используете это значение в некоторых функциях / методах, эти функции / методы недостаточно гибкидля использования во многих контекстах.
2 - класс constant
Если вы используете PHP 5.6 + , вы можете использовать константу класса.
<?php
class Country
{
const COUNTRIES = ['a', 'b'];
}
Pros :
- Он инкапсулирован в классе, поэтому его проще добавить в любой метод.Вы можете добавить несколько методов, которые принимают его в качестве параметра.
Минусы :
- Это не в будущем , еслиВы хотите добавить некоторую информацию, такую как коды ISO или переводы, это сложно.
3 - Статический атрибут
Вы можете использовать статический атрибут.
<?php
class Country
{
public static $countries = ['a', 'b'];
}
Плюсы :
- Инкапсулированы в классе.
Минусы :
- Этооткрытый атрибут, поэтому любая функция / метод может обновлять значение.
- Это не на будущее , сложно добавить информацию, такую как коды ISO или переводы.
В любом случае, вам решать, в зависимости от вашей потребности в данном конкретном случае выбрать, какой метод лучше для вас.