Что означает двойное двоеточие в php
Что означают два двоеточия в PHP?
Я не знаю, что он делает, когда у нас есть такая ситуация:
Он выглядит как путь.
ОТВЕТЫ
Ответ 1
Это (как правило) для доступа к статическому методу или свойству в классе. Он назывался оператором разрешения области или Paamayim Nekudotayim (что приводит к некоторым удивительно запутывающим сообщениям об ошибках!). См. http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php.
Ответ 2
Оператором :: является оператор разрешения области. Он используется для доступа к константам классов или статическим свойствам и методам либо вне класса:
Или внутри метода класса ссылаться на тот же или родительский класс, используя self и parent :
Ответ 3
Ответ 4
использование оператора разрешения области
Константа класса, свойство класса (статическое), функция класса (статическая) могут иметь одно и то же имя и быть доступными через двойное двоеточие.
Ответ 5
В дополнение к ответам относительно использования PHP двух двоеточий в качестве «оператора разрешения области видимости»:
Кроме того, используется двойное двоеточие:
Чтобы преобразовать неквалифицированное, квалифицированное или псевдонимное имя класса в его полностью квалифицированную форму, и
Для вызова метода класса __callStatic.
Чтобы преобразовать имя класса в его полностью определенную форму, добавив «:: class»
Две двоеточия, за которыми следует ключевое слово «class», расположенное после имени класса, обеспечивают полное имя этого класса в виде строки. Т.е., «ClassName :: class» преобразуется в полное имя «ClassName». См. (A) Руководство: классы и объекты: основы, (B) Руководство: классы и объекты: константы классов и (C) Руководство: справочник по языку: константы
Синтаксис был принят в PHP 5.5. Смотрите: (A) RFC и (B) PHP 5.5 Новые функции
Синтаксис «:: class» полезен в пространстве имен для получения полностью определенного имени класса из его неквалифицированной или квалифицированной формы или из псевдонима его имени.
Синтаксис «:: class», по-видимому, работает для разрешения имен интерфейсов, а также имен классов, хотя это, похоже, не документировано источниками, указанными выше.
Внутри класса синтаксис также работает с «self :: class», как упомянуто в RFC «:: class», указанном выше.
Для вызова «__callStatic»
Две двоеточия могут использоваться для «вызова» статического имени метода, которое класс не объявил. Это вызывает метод класса «__callStatic», если он его объявил. Затем метод __callStatic может «динамически» выбирать, как обрабатывать вызов. В PHP это называется «перегрузкой» с помощью «магического метода» __callStatic.
Что означают два двоеточия в PHP?
Я не знаю, что он делает, когда у нас есть такая ситуация:
Он выглядит как путь.
ОТВЕТЫ
Ответ 1
Это (как правило) для доступа к статическому методу или свойству в классе. Он назывался оператором разрешения области или Paamayim Nekudotayim (что приводит к некоторым удивительно запутывающим сообщениям об ошибках!). См. http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php.
Ответ 2
Оператором :: является оператор разрешения области. Он используется для доступа к константам классов или статическим свойствам и методам либо вне класса:
Или внутри метода класса ссылаться на тот же или родительский класс, используя self и parent :
Ответ 3
Ответ 4
использование оператора разрешения области
Константа класса, свойство класса (статическое), функция класса (статическая) могут иметь одно и то же имя и быть доступными через двойное двоеточие.
Ответ 5
В дополнение к ответам относительно использования PHP двух двоеточий в качестве «оператора разрешения области видимости»:
Кроме того, используется двойное двоеточие:
Чтобы преобразовать неквалифицированное, квалифицированное или псевдонимное имя класса в его полностью квалифицированную форму, и
Для вызова метода класса __callStatic.
Чтобы преобразовать имя класса в его полностью определенную форму, добавив «:: class»
Две двоеточия, за которыми следует ключевое слово «class», расположенное после имени класса, обеспечивают полное имя этого класса в виде строки. Т.е., «ClassName :: class» преобразуется в полное имя «ClassName». См. (A) Руководство: классы и объекты: основы, (B) Руководство: классы и объекты: константы классов и (C) Руководство: справочник по языку: константы
Синтаксис был принят в PHP 5.5. Смотрите: (A) RFC и (B) PHP 5.5 Новые функции
Синтаксис «:: class» полезен в пространстве имен для получения полностью определенного имени класса из его неквалифицированной или квалифицированной формы или из псевдонима его имени.
Синтаксис «:: class», по-видимому, работает для разрешения имен интерфейсов, а также имен классов, хотя это, похоже, не документировано источниками, указанными выше.
Внутри класса синтаксис также работает с «self :: class», как упомянуто в RFC «:: class», указанном выше.
Для вызова «__callStatic»
Две двоеточия могут использоваться для «вызова» статического имени метода, которое класс не объявил. Это вызывает метод класса «__callStatic», если он его объявил. Затем метод __callStatic может «динамически» выбирать, как обрабатывать вызов. В PHP это называется «перегрузкой» с помощью «магического метода» __callStatic.
Что означают два двоеточия в PHP?
Я не знаю, что он делает, когда у нас такая ситуация:
Похоже на тропинку.
5 ответов
Возможный Дубликат : Понимание Символов В Ruby Что такое оператор двоеточия в Ruby? Это какой-то код, который дает мне учебник Rails, который я читаю. class Post true validates :title, :presence =>.
Или в методе класса для ссылки на тот же или родительский класс с использованием self и parent :
Чтобы дополнить ответы относительно использования PHP двух двоеточий в качестве «scope resolution operator» :
Кроме того, используется двойное двоеточие:
Чтобы преобразовать неквалифицированное, квалифицированное или псевдонимное имя класса в его полную форму, и
Чтобы вызвать метод «__callStatic» класса с произвольным, ранее не объявленным именем метода.
Чтобы преобразовать имя класса в его полную форму, добавьте «::class»
Синтаксис был принят в PHP 5.5. См.: (A) RFC и (B) PHP 5.5 Новые функции
Синтаксис «::class» полезен в пространстве имен для получения полного имени класса из его неквалифицированной или квалифицированной формы или из псевдонима его имени.
Синтаксис «::class», по-видимому, работает для разрешения имен интерфейсов, а также имен классов, хотя это, по-видимому, не задокументировано источниками, указанными выше.
Внутри класса синтаксис также работает с «self::class», как упоминалось в «::class» RFC, связанном выше.
Чтобы вызвать «__callStatic» с необъявленным именем метода
См. дополнительное обсуждение StackOverflow
Я наткнулся на следующее css: font: 300 24px/30px Roboto, sans-serif; Что означают два размера шрифта (24px/30px)? я привык видеть только один размер.
использование оператора разрешения области действия
Константа класса, свойство класса (статическое), функция класса (статическое) все они могут иметь одно и то же имя и быть доступны с помощью двойного двоеточия
Похожие вопросы:
Я познакомился с этим кодом и никак не мог понять, что означают эти два вопросительных знака? определение этой переменной выглядит следующим образом: var featureImageSizeOptional: CGSize? Код.
Что означают операторы =& / &= в PHP? Где я могу прочитать информацию о них? Поиск в Google не помогает.
Что означает двойное двоеточие в php
Используя эту оператор :: можно обращаться к константам, статическим или перегруженным свойствам или методам класса.
При обращении к этим элементам извне класса, программист должен использовать имя этого класса.
Обозначение «двойное двоеточие» (::) не менялось ни разу в течение всего времени разработки PHP.
Использование :: вне объявления класса
class MyClass <
const CONST_VALUE = ‘Значение константы’ ;
>
echo MyClass :: CONST_VALUE ;
?>
Использование :: в объявлении класса
Когда дочерний класс перегружает методы, объявленные в классе-родителе, PHP не будет осуществлять автоматический вызов методов, принадлежащих классу-родителю. Этот функционал возлагается на метод, перегружаемый в дочернем классе. Данное правило распространяется на конструкторы и деструкторы, перегруженные и другие методы.
Обращение к методу в родительском классе
protected function myFunc () <
echo «MyClass::myFunc()\n» ;
>
>
class OtherClass extends MyClass <
/* Override parent’s definition */
public function myFunc () <
/* But still call the parent function */
parent :: myFunc ();
echo «OtherClass::myFunc()\n» ;
>
>
Все специфические возможности, которыми обладает оператор :: в PHP5, не являются доступными в более ранних версиях PHP.
Что означает двойное двоеточие в php
Оператор разрешения области видимости (::)
Оператор разрешения области видимости (также называемый «Paamayim Nekudotayim») или просто «двойное двоеточие» — это лексема, позволяющая обращаться к статическим свойствам, константам и перегруженным свойствам или методам класса.
При обращении к этим элементам извне класса, необходимо использовать имя этого класса.
Начиная с версии PHP 5.3.0, стало возможным обратиться к классу с помощью переменной. Значение переменной не должно быть ключевым словом (например, self, parent или static).
«Paamayim Nekudotayim» на первый взгляд может показаться странным словосочетанием для обозначения двойного двоеточия. Однако, во время создания Zend Engine версии 0.5 (который входил в PHP3), команда Zend выбрала именно это обозначение. Оно на самом деле значит «двойное двоеточие» — на иврите!
Пример #1 Использование :: вне объявления класса
echo MyClass :: CONST_VALUE ;
?>
Пример #2 Использование :: внутри объявления класса
Когда дочерний класс перегружает методы, объявленные в классе-родителе, PHP не будет осуществлять автоматический вызов методов, принадлежащих классу-родителю. Этот функционал возлагается на метод, перегружаемый в дочернем классе. Данное правило распространяется на конструкторы и деструкторы, перегруженные и «магические» методы.
Пример #3 Обращение к методу в родительском классе
class OtherClass extends MyClass
>
Есть два разных способа доступа к методам в PHP, но в чем разница?
Является ли => оператор присваивания используется только для назначения данных в массиве? Это в отличие от = оператора присваивания, который используется для создания или изменения переменной?
Правило состоит в том, что вызов with :: является вызовом экземпляра тогда и только тогда, когда:
:: используется в статическом контексте, т.е. когда какой-либо метод или свойство объявлено как статическое:
Кроме того, :: оператор (оператор разрешения области действия, также известный как Paamayim Nekudotayim ) используется в динамическом контексте, когда вы вызываете метод / свойство родительского класса:
-> используется в динамическом контексте, т.е. когда вы имеете дело с некоторым экземпляром некоторого класса:
Кстати: я не думаю, что использование Symfony — это хорошая идея, когда у вас нет опыта ООП.
:: подразумевает обращение к свойству/методу/константе класса в контексте класса (обычно статические свойства/методы и константы классов). Т.е. не обязательно создавать объект, можно обратиться так
Но можно и через объект:
будет вызван метод определенный в родителе.
-> — подразумевает обращение к свойству/методу класса в контексте объекта. Т.е. обращение должно идти через объект:
Дополню немного предыдущих ответчиков.
Парадигма ООП подразумевает у объекта наличие состояния — грубо говоря, значений свойств — и поведения — методов. В ряде случаев в программе появляется функционал и данные, к конкретным объектам не привязанные: например, значение числа пи будет для всех объектов одинаковым, а преобразование Фурье для волны не будет зависеть от состояния объекта, на котором вызывается (т.е. обычная математическая функция, так или иначе реализованная в программе, не зависит от внешних факторов). Для всего этого функционала языки реализуют такие вещи, как константы классов, статические переменные и статические методы. Их ключевое отличие в том, что если обычное свойство или метод привязано к конкретному экземпляру класса, то статическое свойство или метод привязаны к самому классу, и им не нужен экземпляр класса для их чтения / установки или вызова.
Оператор двоеточия же называется в PHP оператором разрешения области видимости. Из-за общего отсутствия единообразия в PHP он выполняет смешанные функции, главная из которых — это действительно обращение к статическим свойствам. Но, как выше написал @A1essandro, с его помощью также можно использовать область видимости родительских классов — поэтому его область действия чуть шире, чем доступ к статике и константам, и поэтому он не обеспечивает доступ к статике, а разрешает область видимости.
Разница в вызове метода экземпляра и статическоого метода класса.
Также двойное двоеточие позволяет обращаться к статическим свойствам и константам класса.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.12.1.40866
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.