Skip to content

Commit

Permalink
paamayim-nekudotayim.xml Уточнил перевод, исправил стиль изложения
Browse files Browse the repository at this point in the history
  • Loading branch information
mmalferov authored Feb 7, 2025
1 parent dfe1b01 commit 4bc173e
Showing 1 changed file with 43 additions and 34 deletions.
77 changes: 43 additions & 34 deletions language/oop5/paamayim-nekudotayim.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,71 +2,76 @@
<!-- EN-Revision: e3d36be7d64f1fd47612a91297c7f6d75e4e50c7 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.oop5.paamayim-nekudotayim" xmlns="http://docbook.org/ns/docbook">
<title>Оператор разрешения области видимости (::)</title>
<title>Оператор разрешения области действия ::</title>

<para>
Оператор разрешения области видимости (называемый также Paamayim Nekudotayim) или,
проще говоря, «двойное двоеточие» — это лексема, разрешающая обращаться
к <link linkend="language.oop5.constants">константе</link>,
Оператор разрешения области действия, который ещё называется Paamayim Nekudotayim,
или «двойное двоеточие»,токен, который разрешает доступ
<link linkend="language.oop5.constants">к константе</link>,
<link linkend="language.oop5.static">статическому</link> свойству
или <link linkend="language.oop5.static">статическому</link> методу
класса или одному из его родителей.
Кроме этого, статические свойства или методы разрешено переопределять через
<link linkend="language.oop5.late-static-bindings">позднее статическое связывание</link>.
текущего или родительского класса.
Больше того, статические свойства и методы разрешается переопределять
через <link linkend="language.oop5.late-static-bindings">позднее статическое связывание</link>.
</para>

<para>
При обращении к этим элементам извне класса указывают имя этого класса.
При обращении к элементам класса извне определения класса указывают название класса.
</para>

<para>
Можно обращаться к классу через переменную.
Значение переменной не должно быть ключевым словом (например, <literal>self</literal>,
<literal>parent</literal> или <literal>static</literal>).
К классу возможно обратиться через переменную, при этом
нельзя указывать как значение переменной ключевые слова наподобие <literal>self</literal>,
<literal>parent</literal> или <literal>static</literal>.
</para>

<para>
Paamayim Nekudotayim только вначале кажется странным
словосочетанием для обозначения двойного двоеточия. Однако,
пока писался движок Zend Engine версии 0.5 (который входил в PHP3),
команда Zend решила так и назвать его.
Вообще-то оно и означает «двойное двоеточие» — на иврите!
Вначале словосочетание Paamayim Nekudotayim кажется странным
выбором для названия двойного двоеточия.
Команда Zend назвала оператор так,
пока писала движок Zend Engine версии 0.5, на котором работал PHP 3.
Секрет в том, что эти слова и переводятся как «двойное двоеточие» — с иврита!
</para>

<example>
<title>Использование :: вне объявления класса</title>
<title>Пример обращения к элементам класса через оператор :: из-за пределов определения класса</title>
<programlisting role="php">
<![CDATA[
<?php
class MyClass {
class MyClass
{
const CONST_VALUE = 'Значение константы';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE;
echo MyClass::CONST_VALUE;
?>
]]>
</programlisting>
</example>

<para>
К свойствам и методам внутри самого класса
К свойствам и методам изнутри класса
обращаются через ключевые слова <varname>self</varname>, <varname>parent</varname>
и <varname>static</varname>.
</para>

<example>
<title>Использование :: внутри объявления класса</title>
<title>Пример обращения к элементам класса через оператор :: изнутри определения класса</title>
<programlisting role="php">
<![CDATA[
<?php
class OtherClass extends MyClass
{
public static $my_static = 'статическая переменная';
public static function doubleColon() {
public static function doubleColon()
{
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
Expand All @@ -76,53 +81,57 @@ $classname = 'OtherClass';
$classname::doubleColon();
OtherClass::doubleColon();
?>
]]>
</programlisting>
</example>

<para>
Когда дочерний класс переопределяет методы родительского класса,
PHP не вызывает методы родительского класса автоматически.
Будет ли вызыван метод родительского класса, зависит от дочернего.
Это правило также распространяется на <link
linkend="language.oop5.decon">конструкторы и деструкторы</link>, <link
linkend="language.oop5.overloading">перегруженные</link> и «<link
linkend="language.oop5.magic">магические</linkметоды.
PHP не вызывает метод родительского класса,
когда дочерний класс переопределяет родительский метод.
Дочерний класс сам решает, вызывать ли метод родительского класса.
Это правило также относится <link
linkend="language.oop5.decon">к конструкторам и деструкторам</link>,
<link linkend="language.oop5.overloading">перегруженным</link>
и «<link linkend="language.oop5.magic">магическим</linkметодам.
</para>

<example>
<title>Обращение к методу в родительском классе</title>
<title>Пример вызова родительского метода</title>
<programlisting role="php">
<![CDATA[
<?php
class MyClass
{
protected function myFunc() {
protected function myFunc()
{
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass
{
// Переопределить родительское определение
// Переопределяем родительский метод
public function myFunc()
{
// Но всё ещё вызываем родительскую функцию
// Но всё равно вызываем метод родительского класса
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
$class = new OtherClass();
$class->myFunc();
?>
]]>
</programlisting>
</example>
<para>
Смотрите также <link linkend="language.oop5.basic.class.this">некоторые примеры
статических вызовов</link>.
Смотрите также
<link linkend="language.oop5.basic.class.this">примеры статических вызовов</link>.
</para>

</sect1><!-- Keep this comment at the end of the file
Expand Down

0 comments on commit 4bc173e

Please sign in to comment.