Не перезаписывать переменную php [duplicate]

В качестве альтернативы я сравниваю текущую неделю:

Calendar cal = Calendar.getInstance();
int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR);

SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0);
int weekOfYear = sharedPreferences.getInt("weekOfYear", 0);

if(weekOfYear != currentWeekOfYear){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("weekOfYear", currentWeekOfYear);
    editor.commit();
    // Your once a week code here
}

Я не сторонник этого лучше, чем решение Alarm. Я просто показываю другой подход.

3
задан Eric Leschinski 28 February 2017 в 16:17
поделиться

5 ответов

Посмотрите на этот вопрос. Также может оказаться полезной информация о константах в руководстве по PHP.

5
ответ дан Community 16 August 2018 в 02:19
поделиться
  • 1
    он сказал, что не может использовать константы, хотя ссылка на статическую защиту может быть полезна. – Cymbals 26 July 2012 в 20:04
  • 2
    Я знаю, поэтому я сначала связался с другим вопросом. Однако чтение констант может быть полезным. (особенно некоторые примеры кода на странице руководства) – someoneHuman 26 July 2012 в 20:05
  • 3
    Он отлично справлялся с тем, что мне нужно. Благодаря! – Vinicius Tavares 28 July 2012 в 19:29

Лучшее, что вы можете сделать (что я знаю) в этом случае, сделать их частными переменными внутри класса. Затем вам нужно использовать геттеры и сеттеры для назначения значений или конструкции. Таким образом, чей-то код с меньшей вероятностью столкнется с вашим.

3
ответ дан Cymbals 16 August 2018 в 02:19
поделиться
  • 1
    статический также вариант. но должно быть одинаковым значением для всех объектов. – Cymbals 26 July 2012 в 20:01

Возможно, вы можете реализовать что-то вроде замороженного состояния, и если класс заморожен, его нельзя изменить:

class Test
{
    private $variable;
    private $frozen = false;

    public function freeze() {
        $this->frozen = true;
    }

    public function setVariable($value) {
        if ($this->frozen)
            throw new Exception("...");

        $this->variable = $value;
    }
}
0
ответ дан Fanda 16 August 2018 в 02:19
поделиться

Да, они называются константами .

Если вы не можете их использовать, если вы используете последнюю версию PHP, вы можете использовать пространства имен , используя пространства имен, вы можете иметь 2 переменные с тем же именем на разных пространствах имен. Чтобы у вас не было столкновений.

5
ответ дан Madara Uchiha 16 August 2018 в 02:19
поделиться
  • 1
    он сказал, что не может использовать константы – Cymbals 26 July 2012 в 20:03
  • 2
    @Cymbals: Исправлено. – Madara Uchiha♦ 26 July 2012 в 20:04
  • 3
    downvote удален – Cymbals 26 July 2012 в 20:05
  • 4
    Спасибо, я взглянул на документацию, и пространства имен мне очень помогут в будущем, но, к сожалению, мне придется иметь дело с разными версиями PHP на многих серверах, и я не могу предположить, что все они могут быть обновлены до последней версии, поэтому я возьму одну из других опций – Vinicius Tavares 26 July 2012 в 20:09

Невозможно узнать, как это проще в ваших ситуациях, поскольку кода вообще нет, но лучше вариантов, вероятно, будет

  1. скрыть их в class как частные члены vars.
  2. выставляют их через геттеры.

При необходимости сделайте их статическими

0
ответ дан Nanne 16 August 2018 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: