Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677

self::$var

21.10.2012, 20:05. Показов 3058. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/*
    Главный файл модулей
*/
class Module
{
    //Список всех модулей(массив)
    private static $module;
    //Список активированных модулей(массив)
    private static $activate;
    //Активация модулей CMS системы
    public static function activate($module_name)
    {
        //Активация модулей для ядра движка
        if($module_name == 'Module')
        {
            self::$module = array();
            self::$activate = array();
        }
    }
}
?>
Интересует в данном коде это: self::$module = array();
Что оно делает?Для чего предназначено это?(self и два двоеточия после которых переменная которая обьявлена в классе)?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2012, 20:05
Ответы с готовыми решениями:

Можно ли выполнить условие $var===false, если переменная $var другого типа (не boolean)?
Сокет-сервер, использующий скрипт на PHP под Linux, разрывает соединение со стороны сервера, если для данных $input, полученных с клиента,...

Переменная: $ var = ' '?
1.1Существует переменная: $ var = 'EKA'; Вставьте значение переменной в раздел заголовка документа HTML и тег h3. Вставить в документ...

Как сцепить строки? Например <? $var='Ура!'; $var=$var+' Еще раз...'; echo $var; ?>
Вот пример: &lt;? $var='Ура!'; $var=$var+' Еще раз...'; echo $var; ?&gt; Выводит Ура!0

16
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:12
Цитата Сообщение от Linked Посмотреть сообщение
private static $module;
вот по этому и двоеточие.
self - ссылается на класс в котором описан метод, в данном случае self это то же самое что Module.
:: - это обращение к константам и статик элементам класса.
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
21.10.2012, 20:20  [ТС]
DrobyshevAlex, спасибо)А можете привести простой пример с подобным, чтобы мне было проще понять?)

Добавлено через 4 минуты
DrobyshevAlex, аа, т.е. в данном случае получается что тоже самое что мы напишем $module = array(); ?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:25
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
33
34
35
36
<?php 
 
class A
{
    public static $count_static = 0;
    
    public $count = 0;
    
    function add()
    {
        self::$count_static++;
        $this->count++;
    }
}
 
$a = new A;
$b = new A;
 
$a->add();
$a->add();
 
$b->add();
$b->add();
 
echo 'a.count = ', $a->count, '<br/>';
echo 'a.count_static = ', $a::$count_static, '<br/><br/>';
 
echo 'b.count = ', $b->count, '<br/>';
echo 'b.count_static = ', $b::$count_static, '<br/><br/>';
 
echo 'A.count_static = ', A::$count_static, '<br/><br/>';
 
A::$count_static++;
echo 'a.count_static = ', $a::$count_static, '<br/>';
echo 'b.count_static = ', $b::$count_static, '<br/>';
echo 'A.count_static = ', A::$count_static, '<br/>';
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
21.10.2012, 20:29  [ТС]
DrobyshevAlex, а можете пжлст раскоментировать немного?Я простон е всё понимаю(
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:29
static - не привязан к объекту, или как по другому называют его - экземпляру класса.
Это переменная класса. То есть все обхекты созданные из данного класса будут иметь общую переменную. По этому к ней можно обращатся на прямую,
вместо
PHP
1
$a::$statiс_var
так
PHP
1
A::$static_var
она не привязана к экземпляру объекта.

а просто переменная
PHP
1
public $var;
называется переменной объекта или экземпляра класса.
То есть под неё память выделена в каждом созданном объекте отдельно.
1
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.10.2012, 20:35
Два :: говорят, что мы обращаемся к статическому методу класса или к ее переменной
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
    private static $module = 'Начальное значение';
 
    public static function setName($name)
    {
          self::$module = $name;
    }
}
 
echo A::$module."<br />";
A::setName('Новое значение');
echo A::$module;
Небольшой пример
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
21.10.2012, 20:37  [ТС]
Dolphin, аа, всё теперь ясно)СПАСИБО!!!=D
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:39
Цитата Сообщение от Linked Посмотреть сообщение
а можете пжлст раскоментировать немного
Кликните здесь для просмотра всего текста
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php 
 
// есть класс А
class A
{
    // у него есть статик переменная
    // переменная класса
    public static $count_static = 0;
    
    // и просто переменная объекта
    public $count = 0;
    
    // например есть какая либо функция
    function add()
    {
        // увеличиваем переменную класса
        self::$count_static++;
        // и переменную объекта
        $this->count++;
    }
}
 
// создаём два объекта a и b
$a = new A;
$b = new A;
 
// вызываем 2 раза функцию для объекта $a
$a->add();
$a->add();
 
// после этого обе переменные равны 2
echo 'a.count = ', $a->count, '<br/>';
echo 'a.count_static = ', $a::$count_static, '<br/><br/>';
 
// и вызываем два раза для объекта $b 
$b->add();
$b->add();
 
// тут переменная объекта, то есть $count - будет равна 2
// так как ей не важно чему равна была переменная $count из объекта $a
echo 'b.count = ', $b->count, '<br/>';
// а переменная $count_static будет равна 4! Так как она общая для всех объектов.
// и когда для объекта $b вызывали функцию add - она уже была равна 2
echo 'b.count_static = ', $b::$count_static, '<br/><br/>';
 
// по этому не важно как обращаться, через объект $a или $b
// можно просто чреез сам класс
echo 'A.count_static = ', A::$count_static, '<br/><br/>';
// вот и название "переменная класса"
 
// если мы её изменим вот так, через класс
A::$count_static++;
 
// то она везде изменится
echo 'a.count_static = ', $a::$count_static, '<br/>';
echo 'b.count_static = ', $b::$count_static, '<br/>';
echo 'A.count_static = ', A::$count_static, '<br/>';
// так как по сути $a::$count_static, $b::$count_static, A::$count_static
// они все ссылаются на одну и ту же область памяти
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.10.2012, 20:39
только я там ошибся, обращение к приватному свойству запрещено так )))
1
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:40
Цитата Сообщение от Dolphin Посмотреть сообщение
Два :: говорят, что мы обращаемся к статическому методу класса или к ее переменной
А в сообщении 2 не то же самое сказано?
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.10.2012, 20:41
И еще, по крайней мере в С++ так, что со статическими свойствами могут работать только статические методы
1
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
21.10.2012, 20:42  [ТС]
Dolphin, т.е. public ?
0
21.10.2012, 20:42

Не по теме:

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
А в сообщении 2 не то же самое сказано?
Когда я писал этого не было)) не успел просто. ссори ))

0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 20:44
Цитата Сообщение от Linked Посмотреть сообщение
Dolphin, т.е. public ?
То есть static
1
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.10.2012, 20:45
Цитата Сообщение от Linked Посмотреть сообщение
Dolphin, т.е. public ?
Лучше добавить геттер
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A
{
    private static $module = 'Начальное значение';
 
    public static function setModule($name)
    {
          self::$module = $name;
    }
 
    public static function getModule()
    {
          return self::$module;
    }
}
 
echo A::getModule()."<br />";
A::setModule('Новое значение');
echo A::getModule();
примерно так
1
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 21:42
Цитата Сообщение от Dolphin Посмотреть сообщение
в С++ так, что со статическими свойствами могут работать только статические методы
Не правда.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
class A
{
public:
    static int a;
 
    void add()
    {
        A::a ++;
    }
};
 
int A::a = 0;
 
int main()
{
    A a;
    a.add();
    printf("%i", a.a);
    return 0;
}
Прекрасно работает.
Нельзя обратится как к свойтсву объекта
C++
1
2
3
4
    void add()
    {
        a ++;
    }
Потому что свойства то у объекта по сути и нет. А чрез имя класса - пожалуйста, обращайтесь.
В пхп self - ту же роль там играет как и в с++ A
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2012, 21:42
Помогаю со студенческими работами здесь

Скрипты перестали различать $_POST['var'], $_SESSION['var'] и просто $var
После переезда на новый хостинг с php 5.2 на php 5.3 обнаружил глюк. Почему то скрипты перестали различать $_POST, $_SESSION и просто...

/var/lock и /var/run, как будто нет таких директорий
Доброго времени суток! Система CentOS 5.3. На системе настроен nat на POSTROUTING некоторых ip адресов. Работа системы была...

Почему Мандрива не захотела копировать диск в /var/ftp и /var?
На пробу я сделал два раздела /var /var/ftp Оба побольше 5 гектаров, но мандрива не стала предлагать скопировать диск. Почему? Я...

[?] Вопрос по адресации. В каком случае [var] =var=
Есть код .data t dw 10 .code main: mov ax, ; или t ..

Обращение к переменным x[i]var или ['a'+i]Var
Есть переменные с именами x1var, x2var...xNvar или aVar, bVar... zVar. Можно ли как-то обратиться к ним в цикле? Типа xvar или Var?


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru