Хороший способ получить статус функции JavaScript, основанный на переменной PHP? - PullRequest
1 голос
/ 23 февраля 2010

В CMS, которую я создаю, я хочу иметь свой собственный объект пространства имен javascript $cms. Этот объект должен иметь метод / функцию hasIdentity, которая возвращает статус входа пользователя в систему.

Есть ли способ, которым этот метод / функция может возвращать статус, не прибегая к одному из следующих способов:

  • AJAX
  • глобальная переменная
  • или переписать следующий скрипт из PHP

Вот что у меня так вар:

var $cms = {
    hasIdentity: function()
    {
        return /* the status provided by PHP */;
    }
};

Возможно, это немного эстетично, но я не хочу прибегать к этому:

// write this global var;
var $isLoggedIn = false;

var $cms = {
    hasIdentity: function()
    {
        return $isLoggedIn;
    }
};

Или это:

var $cms = {
    hasIdentity: function()
    {
        $isLoggedIn = this.do.some.ajax.call();
        return $isLoggedIn;
    }
};

Возможно, я больше думал о некоем ООП-подходе, что-то вроде создания $cms объекта, написав его из PHP:

<script type="text/javascript">
  $cms = new $cms( <?php echo $loggedIn ? 'true', 'false' ?> );
</script>

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

Ответы [ 2 ]

3 голосов
/ 23 февраля 2010

Вы также можете сделать:

$cms.isLoggedIn = <?php echo $loggedIn ? 'true', 'false' ?>;

Это потому, что ваш объект $ cms не является функцией конструктора. Если бы это было так, вы бы смогли new.

var CMS = function (loggedIn) {
    this.loggedIn = loggedIn;
};

CMS.prototype.hasIdentity = function () {
    return this.loggedIn;
};

$cms = new CMS(<?php echo $loggedIn ? 'true', 'false' ?>);
0 голосов
/ 23 февраля 2010

Вы можете использовать куки. Установите его из PHP, когда пользователь входит в систему и имеет метод hasIdentity, который читает куки и возвращает его состояние. Это не самое безопасное решение, так как куки могут быть подделаны, но вы все равно проверяете все на стороне сервера, верно? :)

...