Правильный способ использовать один и тот же массив везде в веб-сайте / веб-приложении.

У меня есть сайт & Нужно использовать список стран на нескольких страницах. На некоторых страницах мне нужно отобразить список & на некоторых страницах мне нужно заполнить выпадающий список из этого списка. Для этого мне известны следующие методы. Какой из них лучше & почему или есть какой-либо другой предпочтительный вариант. Я где-то читал, что использование статического ключевого слова замедляет код, а создание объекта каждый раз также замедляет код, поскольку он каждый раз выделяет и использует память. Поэтому, пожалуйста, осветите лучший выход.

Метод А:

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();

-2

Решение

Как я сказал в комментариях, я действительно предпочел бы использовать базу данных. Это более гибкий и на будущее. Вы могли бы иметь стол country который содержит идентификатор, код ISO и все, что вы хотите, другую таблицу country_lang который содержит переводы названий стран. При этом ваш код остается прежним и работает одинаково, обновлений делать не нужно.

Но если вы действительно хотите сохранить страны в переменной без базы данных, вы можете использовать множество решений в соответствии с вашими потребностями.

1 — Обычная старая константа

Если вы используете PHP 7.0+, Вы можете использовать обычную старую константу.

<?php
define('COUNTRIES', ['a', 'b']);
var_dump(COUNTRIES);

Pros:

  • Если она определена во фронт-контроллере или любом глобальном файле, константа доступна везде в приложении.
  • Поскольку это константа, вы уверены в ее целостности во время выполнения, ни один метод не может обновить ее значение.

Cons:

  • Это не на будущее, если однажды вы захотите добавить информацию об этом (например, переводы или коды ISO), это будет довольно сложно.
  • Если вы используете это значение в некоторых функциях / методах, эти функции / методы недостаточно гибки, чтобы их можно было использовать во многих контекстах.

2 — константа класса

Если вы используете PHP 5.6+ Вы можете использовать константу класса.

<?php
class Country
{
const COUNTRIES = ['a', 'b'];
}

Pros:

  • Он инкапсулирован в классе, поэтому его проще добавить в любой метод. Вы можете добавить несколько методов, которые принимают это как параметр.

Cons:

  • Это не на будущее, если вы хотите добавить некоторую информацию, такую ​​как коды ISO или переводы, это сложно.

3 — Статический атрибут

Вы можете использовать статический атрибут.

<?php
class Country
{
public static $countries = ['a', 'b'];
}

Pros:

  • Это инкапсулировано в классе.

Cons:

  • Это открытый атрибут, поэтому любая функция / метод может обновить значение.
  • Это не на будущее, трудно добавить информацию, такую ​​как коды ISO или переводы.

В любом случае, это зависит от вас, в зависимости от вашей потребности в данном конкретном случае выбрать, какой метод лучше для вас.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector