У меня есть сайт & Нужно использовать список стран на нескольких страницах. На некоторых страницах мне нужно отобразить список & на некоторых страницах мне нужно заполнить выпадающий список из этого списка. Для этого мне известны следующие методы. Какой из них лучше & почему или есть какой-либо другой предпочтительный вариант. Я где-то читал, что использование статического ключевого слова замедляет код, а создание объекта каждый раз также замедляет код, поскольку он каждый раз выделяет и использует память. Поэтому, пожалуйста, осветите лучший выход.
Метод А:
class Country
{
public static $CountryList = array('Country 1', 'Country 2', .....);
}
In my pages I will use it with :
$Countries = Country :: $CountryList;
Метод Б:
class Country
{
public $CountryList = array('Country 1', 'Country 2', .....);
}
In my pages I will use it with :
$Obj = new Country();
$CountryList = $Obj->CountryList;
Метод С:
class Country
{
private $CountryList = array('Country 1', 'Country 2', .....);
public static function getList()
{
return $this->CountryList;
}
}
In my pages I will use it with :
$Obj = new Country();
$CountryList = $Obj->getList();
Как я сказал в комментариях, я действительно предпочел бы использовать базу данных. Это более гибкий и на будущее. Вы могли бы иметь стол country
который содержит идентификатор, код ISO и все, что вы хотите, другую таблицу country_lang
который содержит переводы названий стран. При этом ваш код остается прежним и работает одинаково, обновлений делать не нужно.
Но если вы действительно хотите сохранить страны в переменной без базы данных, вы можете использовать множество решений в соответствии с вашими потребностями.
Если вы используете PHP 7.0+, Вы можете использовать обычную старую константу.
<?php
define('COUNTRIES', ['a', 'b']);
var_dump(COUNTRIES);
Pros:
Cons:
Если вы используете PHP 5.6+ Вы можете использовать константу класса.
<?php
class Country
{
const COUNTRIES = ['a', 'b'];
}
Pros:
Cons:
Вы можете использовать статический атрибут.
<?php
class Country
{
public static $countries = ['a', 'b'];
}
Pros:
Cons:
В любом случае, это зависит от вас, в зависимости от вашей потребности в данном конкретном случае выбрать, какой метод лучше для вас.
Других решений пока нет …