Различие между “->” и “::” в ООП PHP MySQLi

пример EggCafe 7Zip cookie Это - пример (архивирующий cookie) с DLL 7Zip.

Обертка CodePlex Это - проект с открытым исходным кодом, которые деформируют функцию архивирования 7z.

7Zip SDK официальный SDK для 7zip (C, C++, C#, Java) <---Мое предложение

библиотека zip .NET SharpDevelop.net

пример CodeProject с 7zip

SharpZipLib Многие архивирующие

28
задан nbro 24 July 2015 в 12:33
поделиться

9 ответов

-> используется при ссылке на член объекта.

:: - Разрешение области Оператор используется для ссылки на статический член класса.

Рассмотрим следующий класс:

class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

    public function buzz() {
        echo "Buzz";
    }
}

Вы могли бы вызвать функцию buzz () , используя -> :

$myFooBar = new FooBar();
$myFooBar->buzz();

Но будет использовать :: для вызова функции fizz () , так как это статический член (член, который не требует экземпляра класс, который будет вызван):

FooBar::fizz();

Кроме того, хотя мы говорим о разнице между статическими членами и экземплярами членов, вы не можете использовать $ this для ссылки к текущему экземпляру внутри статических членов. Вместо этого вы используете self (без ведущих $ ), который ссылается на текущий класс, или parent , если вы хотите сослаться на родительский класс, или если у вас есть удовольствие от работы с PHP 5.3.0, static (который допускает позднее статическое связывание).


В документации используется :: для ссылки на функцию внутри класса, поскольку имя класса в заголовке не является экземпляром класса. Все еще используя тот же пример, запись в документации, относящаяся к функции buzz () , будет использовать следующий заголовок:

FooBar::buzz

Но если в документации не указано, что это статический член, вам нужно будет использовать - > в экземпляре, чтобы вызвать его:

$myFooBar = new FooBar();
$myFooBar->buzz();
68
ответ дан 28 November 2019 в 02:35
поделиться

:: используется для статических методов .

-> используется для метода объекта, если у вас уже есть экземпляр.

5
ответ дан 28 November 2019 в 02:35
поделиться

Если у вас есть экземпляр объекта, вы используете -> для ссылки на метод внутри этого instance:

$foo = new Foo();
$foo->bar();

Использование :: вызывает статический метод без необходимости создания экземпляра объекта:

Foo::bar();

Статический метод не может ссылаться на его текущий экземпляр через $ this , но может ссылаться на себя (текущий класс) с помощью self .

4
ответ дан 28 November 2019 в 02:35
поделиться

:: получает доступ к функции класса без создания экземпляра объекта.

0
ответ дан 28 November 2019 в 02:35
поделиться

в mysqli-> commit, mysqli - это экземпляр MySQLi в mysqli :: commit вызвать статический метод

0
ответ дан 28 November 2019 в 02:35
поделиться

:: определяет статический метод (класс), который может быть вызван без фактического создания экземпляра объекта. -> указывает метод экземпляра (объекта), для которого вам нужен объект, экземпляр которого можно использовать.

Так, например, если у вас есть переменная $ m , которая был экземпляром класса mysqli , вы могли бы вызвать commit , сказав $ m-> commit () , или вы могли бы вызвать фиксацию статически, сказав MySQLi :: commit ()

1
ответ дан 28 November 2019 в 02:35
поделиться

mysqli-> commit - это общедоступная функция, а mysqli :: commit - статическая функция, оба являются нотациями объекта php класса mysqli.

0
ответ дан 28 November 2019 в 02:35
поделиться

Оператор -> предназначен для свойств объекта .

Оператор :: предназначен для свойств класса .

0
ответ дан 28 November 2019 в 02:35
поделиться

обычно в документации php.net :: означает, что этот класс имеет этот метод. Для практического использования вы должны следовать примеру, поэтому используйте синтаксис ->.

0
ответ дан 28 November 2019 в 02:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: