Обновления класса Stati c не видны из другого файла - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь использовать класс stati c в качестве кэша. Целью является запись в класс stati c из разных файлов и, наконец, возможность увидеть изменения из файла чека.

Проблема:

значение [token_1] обновляется первым файлом, но в последнем файле просмотра вместо значения «12» отображается значение «местозаполнитель».

Наблюдения:

Я подозреваю, что отсутствие обновленных данных может быть связано с тем, что несколько файлов запускают включение, заставляя каждое включение загружать файл данных по умолчанию.


Файл: ConfigurationData.class . php

<?php

class ConfigurationData
{
      public static $tokens = [
        "token_1" => "placeholder"
      ];
}

Файл: 1_inject_data. php

<?php

include 'ConfigurationData.class.php';

ConfigurationData::$tokens["token_1"] = 12;

echo "token_1 has been updated to value " .
  "[" . ConfigurationData::$tokens["token_1"] . "]";
echo " in class [ConfigurationData]" . "." . "\n\n";

Файл: 2_check_configuration_data. php

<?php
include 'ConfigurationData.class.php';
echo ConfigurationData::$tokens["token_1"];

Результаты:

[1_inject_data.php]:

token_1 has been updated to value [12] in class [ConfigurationData].

[2_check_configuration_data.php]

placeholder

Ожидаемые результаты: [2_check_configuration_data.php]

12

1 Ответ

0 голосов
/ 04 февраля 2020

php не имеет постоянного состояния при вызовах. когда вы вызываете свои разные сценарии, каждый начинается с чистой памяти. если вам нужно кэшировать по нескольким вызовам, есть много готовых к использованию решений, мой личный фаворит - использовать REDIS для кэширования, поскольку он хорошо взаимодействует с другими стеками или экземплярами.

...