Просмотров: 5 347

Зачем нужны конструкции -> (Тире и знак больше) и :: (двойное двоеточие) в PHP?

Если вы разбирали коды каких-либо программ, написанных на языке php, то, наверняка, вам приходилось встречать в коде вот такие спец. символы:

-> (Тире и знак больше)

:: (Двойное двоеточие)

phpkonstr

Например, конструкции с этими выражениями могут иметь вид:

Hello:: hello_world();
q -> hello_world();

Чтобы понять, для чего нужны эти конструкции, давайте рассмотрим самый простой пример. Предположим, у нас есть простая программа «Привет мир!».

Создадим простой php-файл и напишем в нем следующий код:

Class Hello {
function hello_world () {
echo "Привет мир";
}
}

Теперь подумайте, как можно выполнить функцию hello_world().

Если бы функция hello_world() находилась бы не в классе Hello, то мы бы вызвали ее очень просто:

hello_world ();

В результате, у нас бы на экране появилась надпись «Привет мир». Но, скорее всего, если вы попытались решить задачу таким образом, у вас на экране появилась ошибка:

Fatal error: Call to undefined function hello_world() in …/test.php on line…

Все правильно, т.к. функция находиться в классе, то нужно сообщить компьютеру, что ее нужно искать именно в классе Hello. Если этого не сделать, то ничего работать не будет.

Как же образом такую информацию можно сообщить компьютеру?

Здесь есть несколько вариантов. Давайте рассмотрим каждый в отдельности.

1 вариант. Через создание экземпляра класса.

$q = new Hello;

Этой строкой мы создаем так называемый экземпляр класса Hello. После этой операции, мы можем свободно обращаться к нужной нам функции через этот экземпляр, который в данном случае хранится в переменной $q.

$q -> hello_world();

Связующим звеном между экземпляром класса и функцией становится конструкция «->».

Теперь все работает. Ура! Вы должны увидеть на экране надпись «Привет мир».

2 вариант.  Использование конструкции двойное двоеточие ::

Этот вариант еще намного проще. Здесь даже не нужно создавать никаких экземпляров. Просто пишем.

Hello::hello_world();

Можете проверить, функция успешно будет выполнена.

Надеюсь, что после прочтения этой заметки, Вы теперь поняли, что «->» и «::» используются для доступа к нужной функции в созданном классе.

С помощью этих же конструкций мы можем обращаться и к переменным, которые находятся в классах. Единственное отличие в том, что в конце не нужно ставить скобочки. Например:

Hello::world;

Этой конструкцией мы обращаемся к переменной world, которая находиться в классе Hello.

Особенно часто подобные конструкции можно встретить при разборе кода различных систем управления сайтов. Посмотрите исходный код таких систем как Joomla, WordPress и.т.д. Теперь вы знаете для чего это все нужно.

Вот подборка книг для подробного изучения темы php

08899809_cover-pdf-kniga-aleksandr-zhadaev-php-dlya-nachinauschih   11299307_cover-pdf-kniga-kollektiv-avtorov-php-bystryy-start   06654446_cover-pdf-kniga-igor-simdyanov-php-na-primerah-4578521

Удачи!

  • Александр

    Спасибо, за ценную информацию! Очень пригодилась!

  • Давид

    Наконец-то узнал истину!!!! Спасибо!!!!

  • Дима

    > можно обращаться к переменной world

    но в вашем классе-примере нет переменной world