PHP "постоянная переменная" - PullRequest
0 голосов
/ 26 января 2012

Я сейчас работаю над плагином WordPress. Он поддерживает шорткод и создает элементы DOM при вызове шорткода.

Теперь моя проблема: Я хочу идентифицировать элементы.

Поэтому, когда шорткод вызывается в первый раз, он должен возвращать что-то вроде

<div class="myClass-0"></div>

и когда он вызывается во второй раз

<div class="myClass-1"></div>

и т. Д.

Есть идеи по этому вопросу? Спасибо за помощь

Джулиан.

Ответы [ 3 ]

6 голосов
/ 26 января 2012

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

function doSomething() {
    static $i = 0;
    ##############

    return $i++;
}

doSomething(); // 0
doSomething(); // 1

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

0 голосов
/ 27 января 2012

Ничто из твоих идей не сработало для меня.

Кажется, WordPress удаляет все статические и нестатические переменные.И переменные сессии тоже.

Теперь я получил новую идею и исправил проблему, используя случайные числа.Я написал эту функцию:

function jw_rand($length)
{
    $return = "";
    for($a = 0; $a < $length; $a++)
    {
        $return .= mt_rand(0,9);
    }
    return $return;
}

Затем я вызываю ее через <?php echo("<div class=\"myClass-".jw_rand(5)."\"></div>"); ?>

Это не учитывает мои занятия ... Но, по крайней мере, я могу идентифицировать div.И я не думаю, что вероятность двух идентичных результатов этой функции высока.

Спасибо за помощь.Может быть, какой-то WordPress pro сможет ответить на мой вопрос, объяснив, как работает интеграция с плагином и шорткодом и почему переменные исчезают после однократного вызова плагина.

Приветствует Джулиана

0 голосов
/ 26 января 2012

Если вам нужно между различными запросами, в php нет постоянной переменной. Вы должны использовать сессию или базу данных для этого требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...