Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 02.12.2009
Сообщений: 73

> как правильно работать со статическими переменными

20.01.2011, 01:51. Показов 2283. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу сайт простой магазин, пишу класс шаблонизатора. каждый раз когда запрашивается любая страница из моего сайта, создается новый класс, который собирает шаблон и ответы на запросов. в одном дочернем классе нужна статическая переменная в одном методе
Code
1
2
3
4
5
6
7
8
9
10
11
  function position($pos){
    static $nom = 1;
    $nom_length = $this->getLength();
    switch($pos){
      case 1: { $nom = 1; break; }
      case 2: { if($nom > 1) $nom--; else $nom = 1; break; }
      case 6: { if($nom < $nom_length) $nom++; else $nom = $nom_length; break; }
      case 7: { $nom = $nom_length; break; }
    }
    $sqlres = mysql_query("SELECT * FROM alboms WHERE code='".$nom."'") or die('Query failed: ' . mysql_error());
    $this->setData($sqlres);
ну вот стат перем не хранит постоянное значение((( подскажте реализацию!))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2011, 01:51
Ответы с готовыми решениями:

как работать с переменными с registr_global=off
Сервер не хочет включать эту функцию, знаю что с выключенной функцией надо вставить дополнительный код типа $userName = $_POST; а что...

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

Помогите разобраться со статическими переменными в Java
Hi, java programmer! Я пытаюсь создать и показать окно. Текст программы такой: import javax.swing.*; public class JFrameDemo { ...

2
33 / 33 / 12
Регистрация: 18.05.2010
Сообщений: 99
20.01.2011, 15:01
А что вам конкретно нужно?
Если вы хотите, чтобы эта переменная сохранялся между вызовами метода в пределах одного объекта, используйте обычное свойство:
PHP
1
2
3
4
5
6
7
class myClass {
  public $nom = 1;
 
  public function position($pos) {
    echo $this->nom++;
  }
}
А если вам надо, чтобы эта переменная была общая у всех объектов данного класса, используйте статическое свойство класса и оператор :: для его разрешения:
PHP
1
2
3
4
5
6
7
class myClass {
  public static $nom = 1;
 
  public function position($pos) {
    echo self::$nom++;
  }
}
1
3 / 3 / 1
Регистрация: 02.12.2009
Сообщений: 73
20.01.2011, 16:14  [ТС]
Лучший ответ Сообщение было отмечено Artisoft как решение

Решение

Спасибо что помогаете!)
этот метод в классе data
первый класс, который собирает шаблон называется Admin
при каждом загрузки страницы вызывается Admin, а потом в одном его методе function view(){}
создается класс Data и вызываю метод position

вообщем выглядит вот так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Data {
  public static $nom = 1;
  
  function position($pos){
    $nom_length = $this->getLength();
    switch($pos){
      case 1: { self::$nom = 1; break; }
      case 2: { if(self::$nom > 1) self::$nom--; else self::$nom = 1; break; }
      case 6: { if(self::$nom < $nom_length) self::$nom++; else self::$nom = $nom_length; break; }
      case 7: { self::$nom = $nom_length; break; }
    }
  }
}
 
class Admin {
  public function view($pos){
    $data = new Data;
    switch($pos){
      case 3: {$this->replace('form_add','content'); break;}
      case 8: {$data->add(); break;}
      case 4: {$this->replace('form_update','content'); break;}
      case 9: {$data->update(); break;}
      case 5: {$data->delet(); break;}
      case 1: case 2: case 6: case 7: {$data->position($pos); $this->_doc = str_replace('<!--[%content%]-->', $data->getData(), $this->_doc); break;}
    }
  }
}
 
$admin = new Admin;
 if (isset($_GET['pro'])){
    $admin->view($_GET['pro']);
  }
структура вот такая. почему то при каждом создании объекта сбрасывает значение(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2011, 16:14
Помогаю со студенческими работами здесь

Работа со статическими и локальными переменными в классе
такая проблема: пишу программу под MFC. Работа заключается в принятии посылке строки в COM-порт, затем принимает ответ и разбирает принятую...

Как работать с переменными?
В общем я в средах разработки новичок. Мне бы побольше узнать сейчас о переменных в Windows forms. (с++). Если первые уроки меня учили на...

Как работать с переменными kivy python
Здравствуйте! необходимо, чтобы при нажатии кнопочки менялось значение Label. Что не так? from kivy.app import App from...

Подскажите как работать с глобальными переменными
Подскажите как работать с глобальными переменными, прочел что их нет в java. Мне нужно объявить переменную в одном классе чтобы ее...

Как работать с глобальными переменными в методах?
Есть такой не хитрый код: #глобальная переменная используемая в качестве счетчика counter=0 def showHero (hero): while...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru