Skip to content

Commit 360102b

Browse files
authored
プロパティフックページ更新 (#301)
* Fixed examples, and made some self-contained を取り込み 差分ページ php/doc-en@d6f5401#diff-efd8446f27c7eac04b8ed976baac78ce391a5486b44bd167287bad4fe8a5c0d3 * Added notes stating that these features were added in 8.4:を取り込み 差分ページ php/doc-en@617cc59#diff-efd8446f27c7eac04b8ed976baac78ce391a5486b44bd167287bad4fe8a5c0d3 * Fix property hooks exampleを取り込み php/doc-en#4550 * タイポ * Fix hooks example (#4392) を取り込み php/doc-en#4392 * コミットハッシュ更新
1 parent 3727558 commit 360102b

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

language/oop5/property-hooks.xml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: c925e1a0ce0659ee1c12d80f9a4a58b10cc4222f Maintainer: KentarouTakeda Status: ready -->
3+
<!-- EN-Revision: cd2980a57a0845def25ed84276d9662159a91bd5 Maintainer: KentarouTakeda Status: ready -->
44
<sect1 xml:id="language.oop5.property-hooks" xmlns="http://docbook.org/ns/docbook">
55
<title>プロパティフック</title>
66

@@ -44,7 +44,15 @@
4444
アクセス自体の制限も行いたい場合、
4545
<link linkend="language.oop5.visibility-members-aviz">非対称可視性プロパティ</link> を使ってください。
4646
</simpara>
47-
<sect2>
47+
48+
<note>
49+
<title>バージョン情報</title>
50+
<simpara>
51+
プロパティフックは PHP 8.4 で導入されました。
52+
</simpara>
53+
</note>
54+
55+
<sect2>
4856
<title>基本的なフック構文</title>
4957
<simpara>
5058
フックを宣言する一般的な構文は次のとおりです。
@@ -213,6 +221,7 @@ class Example
213221
</simpara>
214222
<programlisting role="php">
215223
<![CDATA[
224+
<?php
216225
class Example
217226
{
218227
public function __construct(
@@ -234,6 +243,7 @@ class Example
234243
</simpara>
235244
<programlisting role="php">
236245
<![CDATA[
246+
<?php
237247
class Example
238248
{
239249
public private(set) DateTimeInterface $created {
@@ -273,7 +283,7 @@ class Example
273283
仮想プロパティは、値を保持しないプロパティです。
274284
<literal>get</literal>、<literal>set</literal> いずれのフックも
275285
プロパティ自体を正確に参照していない場合、それは仮想プロパティになります。
276-
例えば、<code>$foo</code> という名前のプロパティのフックに <code>$this->foo</code> というコード含まれれば、それはバックドプロパティです。
286+
例えば、<code>$foo</code> という名前のプロパティのフックに <code>$this->foo</code> というコードが含まれれば、それはバックドプロパティです。
277287
次のプロパティはバックドプロパティではなく、エラーが発生します:
278288
</simpara>
279289
<example>
@@ -306,7 +316,7 @@ class Example
306316
<programlisting role="php">
307317
<![CDATA[
308318
<?php
309-
readonly class Rectangle
319+
class Rectangle
310320
{
311321
// 仮想プロパティ
312322
public int $area {
@@ -499,7 +509,10 @@ class PositivePoint extends Point
499509
フックは、自分自身のプロパティにおける親フック以外は呼び出せません。
500510
</simpara>
501511
<simpara>
502-
上記の例をより効率的に書くと、以下のようになります。
512+
上記の例は以下のように書き換えることができます。このようにすると、
513+
将来 <literal>Point</literal> クラスに独自の <literal>set</literal>
514+
フックを追加しても問題になりません(前述の例では、
515+
親クラスに追加されたフックが子クラスで無視されてしまいます)。
503516
</simpara>
504517
<example>
505518
<title>親フックへのアクセス (set)</title>
@@ -519,7 +532,7 @@ class PositivePoint extends Point
519532
if ($value < 0) {
520533
throw new \InvalidArgumentException('Too small');
521534
}
522-
$this->x = $value;
535+
parent::$x::set($value);
523536
}
524537
}
525538
}

0 commit comments

Comments
 (0)