Вы можете использовать метод nos, описанный в этом потоке, или (более обычный) способ, передавая его между связанными процессами (обычно родительскими или дочерними), создавая их, разветвленные процессы автоматически получают копию.
Действительно, forked-процессы получают все ваши FD и могут использовать их, если они не закрывают их (что обычно является хорошей идеей).
Поэтому, если родительский forks два ребенка, если они оба имеют файловый дескриптор, который они не закрывали, теперь он разделен (даже если родитель впоследствии закрывает его). Это может быть, например, труба от одного ребенка к другому. Это как перенаправление оболочки подобно
ls -l | more
Работа.
ПРИМЕЧАНИЕ: хотя это принятый ответ, стоит отметить, что в PHP 5.6+ вы можете иметь константные массивы - см. Ответ Андреа Фолдс ниже .
Вы также можно сериализовать ваш массив и затем поместить его в константу:
# define constant, serialize array
define ("FRUITS", serialize (array ("apple", "cherry", "banana")));
# use it
$my_fruits = unserialize (FRUITS);
если Вы используете PHP 7 & 7 +, можно использовать выборку как это также
define('TEAM', ['guy', 'development team']);
echo TEAM[0];
// output from system will be "guy"
Это верно, вы не можете использовать массивы для константы, только масштабатор и ноль. Идея использования массива для констант мне кажется несколько отсталой.
Вместо этого я предлагаю определить свой собственный константный класс и использовать его для получения константы.
Я согласен с eyze, константы имеют тенденцию быть однозначные значения, необходимые на протяжении всего жизненного цикла вашего приложения. Вы можете подумать об использовании файла конфигурации вместо констант для такого рода вещей.
Если вам действительно нужны константные массивы, вы можете использовать соглашения об именах для имитации массивов: например, DB_Name, DB_USER, DB_HOST и т. Д.
Константы могут содержать только скалярные значения, я предлагаю вам сохранить сериализацию (или представление в кодировке JSON) массива.
Вы можете хранить их как статические переменные класса:
class Constants {
public static $array = array('guy', 'development team');
}
# Warning: array can be changed lateron, so this is not a real constant value:
Constants::$array[] = 'newValue';
Если вам не нравится идея, что массив может быть изменен другими, может помочь геттер:
class Constants {
private static $array = array('guy', 'development team');
public static function getArray() {
return self::$array;
}
}
$constantArray = Constants::getArray();
EDIT
Начиная с PHP5.4, можно даже получить доступ к значениям массива без необходимости в промежуточных переменных, то есть работает следующее:
$x = Constants::getArray()['index'];