пример EggCafe 7Zip cookie Это - пример (архивирующий cookie) с DLL 7Zip.
Обертка CodePlex Это - проект с открытым исходным кодом, которые деформируют функцию архивирования 7z.
7Zip SDK официальный SDK для 7zip (C, C++, C#, Java) <---Мое предложение
библиотека zip .NET SharpDevelop.net
пример CodeProject с 7zip
SharpZipLib Многие архивирующие
->
используется при ссылке на член объекта.
::
- Разрешение области Оператор используется для ссылки на статический член класса.
Рассмотрим следующий класс:
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();
::
используется для статических методов .
->
используется для метода объекта, если у вас уже есть экземпляр.
Если у вас есть экземпляр объекта, вы используете -> для ссылки на метод внутри этого instance:
$foo = new Foo();
$foo->bar();
Использование :: вызывает статический метод без необходимости создания экземпляра объекта:
Foo::bar();
Статический метод не может ссылаться на его текущий экземпляр через $ this
, но может ссылаться на себя (текущий класс) с помощью self
.
:: получает доступ к функции класса без создания экземпляра объекта.
в mysqli-> commit, mysqli - это экземпляр MySQLi в mysqli :: commit вызвать статический метод
::
определяет статический метод (класс), который может быть вызван без фактического создания экземпляра объекта. ->
указывает метод экземпляра (объекта), для которого вам нужен объект, экземпляр которого можно использовать.
Так, например, если у вас есть переменная $ m
, которая был экземпляром класса mysqli
, вы могли бы вызвать commit
, сказав $ m-> commit ()
, или вы могли бы вызвать фиксацию статически, сказав MySQLi :: commit ()
mysqli-> commit - это общедоступная функция, а mysqli :: commit - статическая функция, оба являются нотациями объекта php класса mysqli.
Оператор ->
предназначен для свойств объекта .
Оператор ::
предназначен для свойств класса .
обычно в документации php.net :: означает, что этот класс имеет этот метод. Для практического использования вы должны следовать примеру, поэтому используйте синтаксис ->.