Skip to content

Commit 8b81bca

Browse files
committed
example を修正 / new に関するドキュメントの挿入位置が誤っていたバグを修正
c418145 でバグが混入していた、、 内容的には影響はないのだが、英語版をベースにする建前は厳守するべき。正直スマンかった。
1 parent 78331de commit 8b81bca

File tree

1 file changed

+86
-66
lines changed

1 file changed

+86
-66
lines changed

language/oop5/basic.xml

Lines changed: 86 additions & 66 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: 2f85d57a0b5a01b875cbca2b291f04389cf61ac2 Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: c1f37a6c270aadbbb3da56a3973ffd62197adf2b Maintainer: takagi Status: ready -->
44
<!-- CREDITS: hirokawa,mumumu,jdkfx -->
55

66
<sect1 xml:id="language.oop5.basic" xmlns="http://docbook.org/ns/docbook">
@@ -226,67 +226,26 @@ readonly class Foo
226226
<programlisting role="php">
227227
<![CDATA[
228228
<?php
229+
class SimpleClass {
230+
}
231+
229232
$instance = new SimpleClass();
233+
var_dump($instance);
230234
231235
// 変数を使うこともできます
232236
$className = 'SimpleClass';
233237
$instance = new $className(); // new SimpleClass()
238+
var_dump($instance);
234239
?>
235240
]]>
236241
</programlisting>
237242
</example>
238-
<para>
239-
クラスのコンテキストにおいては、
240-
<literal>new self</literal> や <literal>new parent</literal>
241-
のようにして新しいオブジェクトを作成することができます。
242-
</para>
243243
<para>
244-
作成済みのクラスのインスタンスを新たな変数に代入する場合、新しい変数は、
245-
代入されたオブジェクトと同じインスタンスにアクセスします。
246-
この動作は、インスタンスを関数に渡す場合も同様です。
247-
作成済みのオブジェクトのコピーは、その
248-
<link linkend="language.oop5.cloning">クローンを作成</link>
249-
することにより作成可能です。
250-
</para>
251-
<example>
252-
<title>オブジェクトの代入</title>
253-
<programlisting role="php">
254-
<![CDATA[
255-
<?php
256-
257-
$instance = new SimpleClass();
258-
259-
$assigned = $instance;
260-
$reference =& $instance;
261-
262-
$instance->var = '$assigned will have this value';
263-
264-
$instance = null; // $instance と $reference は null になります
265-
266-
var_dump($instance);
267-
var_dump($reference);
268-
var_dump($assigned);
269-
?>
270-
]]>
271-
</programlisting>
272-
&example.outputs;
273-
<screen>
274-
<![CDATA[
275-
NULL
276-
NULL
277-
object(SimpleClass)#1 (1) {
278-
["var"]=>
279-
string(30) "$assigned will have this value"
280-
}
281-
]]>
282-
</screen>
283-
</example>
284-
<para>
285-
PHP 8.0.0 以降では、
286-
<literal>new</literal> を任意の式と一緒に使う機能がサポートされました。
287-
これによって、式が文字列を生成する場合に、
288-
より複雑なインスタンス化を行えるようになります。
289-
式は括弧で囲まなければいけません。
244+
PHP 8.0.0 以降では、
245+
<literal>new</literal> を任意の式と一緒に使う機能がサポートされました。
246+
これによって、式が文字列を生成する場合に、
247+
より複雑なインスタンス化を行えるようになります。
248+
式は括弧で囲まなければいけません。
290249
</para>
291250
<example>
292251
<title>任意の式を使ってインスタンスを生成する</title>
@@ -329,6 +288,55 @@ object(ClassC)#1 (0) {
329288
object(ClassD)#1 (0) {
330289
}
331290
291+
]]>
292+
</screen>
293+
</example>
294+
<para>
295+
クラスのコンテキストにおいては、
296+
<literal>new self</literal> や <literal>new parent</literal>
297+
のようにして新しいオブジェクトを作成することができます。
298+
</para>
299+
<para>
300+
作成済みのクラスのインスタンスを新たな変数に代入する場合、新しい変数は、
301+
代入されたオブジェクトと同じインスタンスにアクセスします。
302+
この動作は、インスタンスを関数に渡す場合も同様です。
303+
作成済みのオブジェクトのコピーは、その
304+
<link linkend="language.oop5.cloning">クローンを作成</link>
305+
することにより作成可能です。
306+
</para>
307+
<example>
308+
<title>オブジェクトの代入</title>
309+
<programlisting role="php">
310+
<![CDATA[
311+
<?php
312+
class SimpleClass {
313+
public string $var;
314+
}
315+
316+
$instance = new SimpleClass();
317+
318+
$assigned = $instance;
319+
$reference =& $instance;
320+
321+
$instance->var = '$assigned will have this value';
322+
323+
$instance = null; // $instance と $reference は null になります
324+
325+
var_dump($instance);
326+
var_dump($reference);
327+
var_dump($assigned);
328+
?>
329+
]]>
330+
</programlisting>
331+
&example.outputs;
332+
<screen>
333+
<![CDATA[
334+
NULL
335+
NULL
336+
object(SimpleClass)#1 (1) {
337+
["var"]=>
338+
string(30) "$assigned will have this value"
339+
}
332340
]]>
333341
</screen>
334342
</example>
@@ -340,26 +348,27 @@ object(ClassD)#1 (0) {
340348
<programlisting role="php">
341349
<![CDATA[
342350
<?php
351+
343352
class Test
344353
{
345-
static public function getNew()
354+
public static function getNew()
346355
{
347-
return new static;
356+
return new static();
348357
}
349358
}
350359
351-
class Child extends Test
352-
{}
360+
class Child extends Test {}
353361
354-
$obj1 = new Test();
355-
$obj2 = new $obj1;
362+
$obj1 = new Test(); // By the class name
363+
$obj2 = new $obj1(); // Through the variable containing an object
356364
var_dump($obj1 !== $obj2);
357365
358-
$obj3 = Test::getNew();
366+
$obj3 = Test::getNew(); // By the class method
359367
var_dump($obj3 instanceof Test);
360368
361-
$obj4 = Child::getNew();
369+
$obj4 = Child::getNew(); // Through a child class method
362370
var_dump($obj4 instanceof Child);
371+
363372
?>
364373
]]>
365374
</programlisting>
@@ -381,16 +390,18 @@ bool(true)
381390
<programlisting role="php">
382391
<![CDATA[
383392
<?php
384-
echo (new DateTime())->format('Y');
393+
echo (new DateTime())->format('Y'), PHP_EOL;
394+
385395
// PHP 8.4.0 以降、囲む括弧は省略可能です。
386-
echo new DateTime()->format('Y');
396+
echo new DateTime()->format('Y'), PHP_EOL;
387397
?>
388398
]]>
389399
</programlisting>
390400
&example.outputs.similar;
391401
<screen>
392402
<![CDATA[
393-
2016
403+
2025
404+
2025
394405
]]>
395406
</screen>
396407
</example>
@@ -503,6 +514,14 @@ echo ($obj->bar)(), PHP_EOL;
503514
<programlisting role="php">
504515
<![CDATA[
505516
<?php
517+
class SimpleClass
518+
{
519+
function displayVar()
520+
{
521+
echo "Parent class\n";
522+
}
523+
}
524+
506525
class ExtendClass extends SimpleClass
507526
{
508527
// 親クラスのメソッドを再定義
@@ -754,9 +773,10 @@ Does\Not\Exist
754773
namespace NS {
755774
class ClassName {
756775
}
776+
777+
$c = new ClassName();
778+
print $c::class;
757779
}
758-
$c = new ClassName();
759-
print $c::class;
760780
?>
761781
]]>
762782
</programlisting>
@@ -787,7 +807,7 @@ NS\ClassName
787807
<para>
788808
<example>
789809
<title>nullsafe 演算子</title>
790-
<programlisting role="php">
810+
<programlisting role="php" annotations="non-interactive">
791811
<![CDATA[
792812
<?php
793813

0 commit comments

Comments
 (0)