В качестве альтернативы я сравниваю текущую неделю:
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. Я просто показываю другой подход.
Посмотрите на этот вопрос. Также может оказаться полезной информация о константах в руководстве по PHP.
Лучшее, что вы можете сделать (что я знаю) в этом случае, сделать их частными переменными внутри класса. Затем вам нужно использовать геттеры и сеттеры для назначения значений или конструкции. Таким образом, чей-то код с меньшей вероятностью столкнется с вашим.
Возможно, вы можете реализовать что-то вроде замороженного состояния, и если класс заморожен, его нельзя изменить:
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;
}
}
Да, они называются константами .
Если вы не можете их использовать, если вы используете последнюю версию PHP, вы можете использовать пространства имен , используя пространства имен, вы можете иметь 2 переменные с тем же именем на разных пространствах имен. Чтобы у вас не было столкновений.
Невозможно узнать, как это проще в ваших ситуациях, поскольку кода вообще нет, но лучше вариантов, вероятно, будет
При необходимости сделайте их статическими