git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@343234 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Andrey Gromov
2017-10-11 21:32:51 +00:00
parent 7790ef59d0
commit d91fb2cf21
6 changed files with 563 additions and 121 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b90505533de3950c34838bd3715e3e40088c9a05 Maintainer: irker Status: ready -->
<!-- EN-Revision: 5e40a5a43dffadda040c030eaa12d88510a0987c Maintainer: irker Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
@ -41,31 +41,31 @@ class SimpleClass
}
?>
]]>
</programlisting>
</example>
<para>
Псевдо-переменная <varname>$this</varname> доступна в том случае,
если метод был вызван в контексте объекта. <varname>$this</varname>
является ссылкой на вызываемый объект. Обычно это тот объект, которому
принадлежит вызванный метод, но может быть и другой объект, если метод был
вызван <link linkend="language.oop5.static">статически</link> из контекста
другого объекта.
Начиная с PHP 7.0.0, вызов нестатического метода статическим способом из
неподходящего контекста приведет к тому, что $this будет неопределен внутри метода.
Вызов нестатического метода статическим способом из неподходящего контекста было
объявлено устаревшив в PHP 5.6.0. Начиная с PHP 7.0.0, подобный вызов объявлен
совсем устаревшим (если только вызов не произошел из подходящего контекста).
До PHP 5.6.0, подобные вызовы уже сопровождались строгим уведомлением.
</para>
<para>
<example xml:id="language.oop5.basic.class.this">
<title>Несколько примеров с псевдо-переменной <varname>$this</varname></title>
<simpara>
Мы предполагаем, что error_reporting отключен для этого примера; в противном случае
следующий код, в зависимости от версии PHP, вызовет предупреждения уровней
"устаревшее" или "строгое".
</simpara>
<programlisting role="php">
</programlisting>
</example>
<para>
Псевдо-переменная <varname>$this</varname> доступна в том случае,
если метод был вызван в контексте объекта. <varname>$this</varname>
является ссылкой на вызываемый объект. Обычно это тот объект, которому
принадлежит вызванный метод, но может быть и другой объект, если метод был
вызван <link linkend="language.oop5.static">статически</link> из контекста
другого объекта.
Начиная с PHP 7.0.0, вызов нестатического метода статическим способом из
неподходящего контекста приведет к тому, что $this будет неопределен внутри метода.
Вызов нестатического метода статическим способом из неподходящего контекста было
объявлено устаревшив в PHP 5.6.0. Начиная с PHP 7.0.0, подобный вызов объявлен
совсем устаревшим (если только вызов не произошел из подходящего контекста).
До PHP 5.6.0, подобные вызовы уже сопровождались строгим уведомлением.
</para>
<para>
<example xml:id="language.oop5.basic.class.this">
<title>Несколько примеров с псевдо-переменной <varname>$this</varname></title>
<simpara>
Мы предполагаем, что error_reporting отключен для этого примера; в противном случае
следующий код, в зависимости от версии PHP, вызовет предупреждения уровней
"устаревшее" или "строгое".
</simpara>
<programlisting role="php">
<![CDATA[
<?php
class A
@ -120,27 +120,27 @@ $this is not defined.
]]>
</screen>
</example>
</para>
</sect2>
<sect2 xml:id="language.oop5.basic.new">
<title>new</title>
<para>
Для создания экземпляра класса используется директива <literal>new</literal>.
Новый объект всегда будет создан, за исключением случаев, когда он содержит
<link linkend="language.oop5.decon">конструктор</link>, в котором определен вызов
<link linkend="language.exceptions">исключения</link> в случае ошибки.
Рекомендуется определять классы до создания их экземпляров
(в некоторых случаях это обязательно).
</para>
<para>
Если с директивой <literal>new</literal> используется строка (<type>string</type>),
содержащая имя класса, то будет создан новый экземпляр этого класса. Если
имя находится в пространстве имен, то оно должно быть задано полностью.
</para>
<example>
<title>Создание экземпляра класса</title>
<programlisting role="php">
</para>
</sect2>
<sect2 xml:id="language.oop5.basic.new">
<title>new</title>
<para>
Для создания экземпляра класса используется директива <literal>new</literal>.
Новый объект всегда будет создан, за исключением случаев, когда он содержит
<link linkend="language.oop5.decon">конструктор</link>, в котором определен вызов
<link linkend="language.exceptions">исключения</link> в случае ошибки.
Рекомендуется определять классы до создания их экземпляров
(в некоторых случаях это обязательно).
</para>
<para>
Если с директивой <literal>new</literal> используется строка (<type>string</type>),
содержащая имя класса, то будет создан новый экземпляр этого класса. Если
имя находится в пространстве имен, то оно должно быть задано полностью.
</para>
<example>
<title>Создание экземпляра класса</title>
<programlisting role="php">
<![CDATA[
<?php
$instance = new SimpleClass();
@ -257,20 +257,21 @@ echo (new DateTime())->format('Y');
]]>
</screen>
</example>
</sect2>
<sect2 xml:id="language.oop5.basic.properties-methods">
<title>Properties and methods</title>
<para>
Свойства и методы класса живут в разделенных "пространствах имен", так что
возможно задавать свойство и метод с одним и тем же именем.
Ссылки как на свойства, так и на методы имеют одинаковую нотацию, и получается,
что получите вы доступ к свойству или же вызовете метод - определяется контекстом
использования.
</para>
<example>
<title>Доступ к свойству vs. вызов метода</title>
<programlisting role="php">
</sect2>
<sect2 xml:id="language.oop5.basic.properties-methods">
<title>Properties and methods</title>
<para>
Свойства и методы класса живут в разделенных "пространствах имен", так что
возможно задавать свойство и метод с одним и тем же именем.
Ссылки как на свойства, так и на методы имеют одинаковую нотацию, и получается,
что получите вы доступ к свойству или же вызовете метод - определяется контекстом
использования.
</para>
<example>
<title>Доступ к свойству vs. вызов метода</title>
<programlisting role="php">
<![CDATA[
<?php
class Foo
{
public $bar = 'property';
@ -283,26 +284,27 @@ class Foo
$obj = new Foo();
echo $obj->bar, PHP_EOL, $obj->bar(), PHP_EOL;
]]>
</programlisting>
&example.outputs;
<screen>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
property
method
]]>
</screen>
</example>
<para>
Это означает, что вызвать <link linkend="functions.anonymous">анонимную
функцию</link>, присвоенную переменной напрямую не получится.
Вместо этого сначала присвойте свойство переменной, например.
Начиная с PHP 7.0.0 возможно осуществить подобный вызов, заключив свойство
в скобки.
</para>
<example>
<title>Вызов анонимной функции содержащейся в свойстве</title>
<programlisting role="php">
</screen>
</example>
<para>
Это означает, что вызвать <link linkend="functions.anonymous">анонимную
функцию</link>, присвоенную переменной напрямую не получится.
Вместо этого сначала присвойте свойство переменной, например.
Начиная с PHP 7.0.0 возможно осуществить подобный вызов, заключив свойство
в скобки.
</para>
<example>
<title>Вызов анонимной функции содержащейся в свойстве</title>
<programlisting role="php">
<![CDATA[
<?php
class Foo
{
public $bar;
@ -323,39 +325,39 @@ echo $func(), PHP_EOL;
// или так, начиная с of PHP 7.0.0:
echo ($obj->bar)(), PHP_EOL;
]]>
</programlisting>
&example.outputs;
<screen>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
42
]]>
</screen>
</example>
</sect2>
<sect2 xml:id="language.oop5.basic.extends">
<title>extends</title>
<para>
Класс может наследовать методы и свойства другого класса используя
ключевое слово <literal>extends</literal> при его описании. Невозможно наследовать несколько
классов, один класс может наследовать только один базовый класс.
</para>
<para>
Наследуемые методы и свойства могут быть переопределены (за исключением
случаев, когда метод класса объявлен как <link linkend="language.oop5.final">final</link>)
путем объявления их с теми же именами, как и в родительском классе.
Существует возможность доступа к переопределенным методам или статическим
методам путем обращения к ним через
<link linkend="language.oop5.paamayim-nekudotayim">parent::</link>
</para>
<para>
Когда переопределяются методы число и типы аргументов должны оставаться
такими же как и были, иначе PHP вызовет ошибку уровня <constant>E_STRICT</constant>.
Это не относится к конструктору, который можно
переопределить с другими параметрами.
</para>
<example>
<title>Простое наследование классов</title>
<programlisting role="php">
</screen>
</example>
</sect2>
<sect2 xml:id="language.oop5.basic.extends">
<title>extends</title>
<para>
Класс может наследовать методы и свойства другого класса используя
ключевое слово <literal>extends</literal> при его описании. Невозможно наследовать несколько
классов, один класс может наследовать только один базовый класс.
</para>
<para>
Наследуемые методы и свойства могут быть переопределены (за исключением
случаев, когда метод класса объявлен как <link linkend="language.oop5.final">final</link>)
путем объявления их с теми же именами, как и в родительском классе.
Существует возможность доступа к переопределенным методам или статическим
методам путем обращения к ним через
<link linkend="language.oop5.paamayim-nekudotayim">parent::</link>
</para>
<para>
Когда переопределяются методы число и типы аргументов должны оставаться
такими же как и были, иначе PHP вызовет ошибку уровня <constant>E_STRICT</constant>.
Это не относится к конструктору, который можно
переопределить с другими параметрами.
</para>
<example>
<title>Простое наследование классов</title>
<programlisting role="php">
<![CDATA[
<?php
class ExtendClass extends SimpleClass
@ -381,22 +383,22 @@ $extended->displayVar();
]]>
</screen>
</example>
</sect2>
</sect2>
<sect2 xml:id="language.oop5.basic.class.class">
<title>::class</title>
<sect2 xml:id="language.oop5.basic.class.class">
<title>::class</title>
<para>
Начиная с версии PHP 5.5 можно использовать ключевое слово <literal>class</literal>
для разрешения имени класса. С помощью конструкции <literal>ClassName::class</literal>
можно получить строку с абсолютным именем класса <literal>ClassName</literal>.
Обычно это довольно полезно при работе с классами, использующими
<link linkend="language.namespaces">пространства имен</link>.
</para>
<para>
<example xml:id="language.oop5.basic.class.class.name">
<title>Разрешение имени класса</title>
<programlisting role="php">
<para>
Начиная с версии PHP 5.5 можно использовать ключевое слово <literal>class</literal>
для разрешения имени класса. С помощью конструкции <literal>ClassName::class</literal>
можно получить строку с абсолютным именем класса <literal>ClassName</literal>.
Обычно это довольно полезно при работе с классами, использующими
<link linkend="language.namespaces">пространства имен</link>.
</para>
<para>
<example xml:id="language.oop5.basic.class.class.name">
<title>Разрешение имени класса</title>
<programlisting role="php">
<![CDATA[
<?php
namespace NS {
@ -423,7 +425,7 @@ NS\ClassName
если класс не существует. Ошибка в этом случае не выдается.
</para>
</note>
</sect2>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a2e72b2b3b376d7c852353a511c9a443fbffab6c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mhash-count" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mhash_count</refname>
<refpurpose>Получить наибольший доступный ID хеша</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>mhash_count</methodname>
<void/>
</methodsynopsis>
<para>
Возвращает наибольший доступный ID хеша.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Получить наибольший доступный идентификатор хеша. Хеши нумеруются от 0 до этого
ID.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Обход всех хэшей</title>
<programlisting role="php">
<![CDATA[
<?php
$nr = mhash_count();
for ($i = 0; $i <= $nr; $i++) {
echo sprintf("The blocksize of %s is %d\n",
mhash_get_hash_name($i),
mhash_get_block_size($i));
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a2e72b2b3b376d7c852353a511c9a443fbffab6c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mhash-get-block-size" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mhash_get_block_size</refname>
<refpurpose>Получить размер блока для заданного хеша</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>mhash_get_block_size</methodname>
<methodparam><type>int</type><parameter>hash</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает размер блока для заданного <parameter>hash</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>hash</parameter></term>
<listitem>
<para>
ID хеша. Одна из констант <constant>MHASH_hashname</constant>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает размер в байтах или &false;, если параметр <parameter>hash</parameter>
задан некорректно.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>mhash_get_block_size</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo mhash_get_block_size(MHASH_MD5); // 16
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a2e72b2b3b376d7c852353a511c9a443fbffab6c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mhash-get-hash-name" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mhash_get_hash_name</refname>
<refpurpose>Получить имя указанного хеша</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>mhash_get_hash_name</methodname>
<methodparam><type>int</type><parameter>hash</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает имя заданного <parameter>hash</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>hash</parameter></term>
<listitem>
<para>
ID хеша. Одна из констант <constant>MHASH_hashname</constant>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку с названием или &false;, если такого хеша нет.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>mhash_get_hash_name</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo mhash_get_hash_name(MHASH_MD5); // MD5
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a2e72b2b3b376d7c852353a511c9a443fbffab6c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mhash-keygen-s2k" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mhash_keygen_s2k</refname>
<refpurpose>Генерация ключа</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>mhash_keygen_s2k</methodname>
<methodparam><type>int</type><parameter>hash</parameter></methodparam>
<methodparam><type>string</type><parameter>password</parameter></methodparam>
<methodparam><type>string</type><parameter>salt</parameter></methodparam>
<methodparam><type>int</type><parameter>bytes</parameter></methodparam>
</methodsynopsis>
<para>
Генерирует ключ в соответствии с заданным <parameter>hash</parameter> и указанным
паролем <parameter>password</parameter>.
</para>
<para>
Используется алгоритм S2K с солью, как описано в документе OpenPGP
(<link xlink:href="&url.rfc;2440">RFC 2440</link>).
</para>
<para>
Помните, что пользовательские пароли не являются подходящими
ключами для криптографических алгоритмов, так как обычно они как минимум
набираемы на клавиатуре. Такие пароли используют только 6-7 бит (или меньше)
на символ. Так что такие пароли крайне рекомендуется предварительно преобразовывать
(например этой функцией).
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>hash</parameter></term>
<listitem>
<para>
ID хеша. Одна из констант <constant>MHASH_hashname</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>password</parameter></term>
<listitem>
<para>
Пользовательский пароль.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>salt</parameter></term>
<listitem>
<para>
Должна быть разной и достаточно случайной для каждого создаваемого
ключа. Так как <parameter>salt</parameter> должна быть известна
при проверке ключа, то хорошей идеей будет добавить ее к ключу.
Соль имеет фиксированный размер в 8 байт и будет дополнена нулями, если
заданный параметр будет короче.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>bytes</parameter></term>
<listitem>
<para>
Длина ключа в байтах.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку с ключем или &false; в случае ошибки.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a2e72b2b3b376d7c852353a511c9a443fbffab6c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mhash" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mhash</refname>
<refpurpose>Вычисляет хеш</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>mhash</methodname>
<methodparam><type>int</type><parameter>hash</parameter></methodparam>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>key</parameter></methodparam>
</methodsynopsis>
<para>
<function>mhash</function> applies a hash function specified by
<parameter>hash</parameter> to the <parameter>data</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>hash</parameter></term>
<listitem>
<para>
ID хеша. Одна из констант <constant>MHASH_hashname</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
Строка с пользовательскими данными.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>key</parameter></term>
<listitem>
<para>
Если задано, то функция вернет результирующий HMAC.
HMAC - это код аутентификации сообщений, использующий хеш-функции.
Не все алгоритмы поддерживаемые mhash могут быть использованы в
режиме HMAC.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку с результирующим хешем или HMAC, или &false; в случае ошибки.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->