svn: /phpdoc/kr/trunk/language/oop5/ decon.xml

[email protected] (Yu Ilho)
Newsgroups php.doc.kr
Message-ID <[email protected]>
acidd15                                  Sun, 11 Jan 2015 10:21:12 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=335716

Log:
initial translate.

Changed paths:
    A   phpdoc/kr/trunk/language/oop5/decon.xml

Added: phpdoc/kr/trunk/language/oop5/decon.xml
===================================================================
--- phpdoc/kr/trunk/language/oop5/decon.xml	                        (rev 0)
+++ phpdoc/kr/trunk/language/oop5/decon.xml	2015-01-11 10:21:12 UTC (rev 335716)
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 333259 Maintainer: acidd15 Status: ready -->
+<!-- Reviewed: no -->
+
+ <sect1 xml:id="language.oop5.decon" xmlns="http://docbook.org/ns/docbook">
+  <title>생성자와 소멸자</title>
+
+  <sect2 xml:id="language.oop5.decon.constructor">
+   <title>생성자</title>
+   <methodsynopsis xml:id="object.construct">
+    <type>void</type><methodname>__construct</methodname>
+    <methodparam choice="opt"><type>mixed</type><parameter>args</parameter><initializer>""</initializer></methodparam>
+    <methodparam choice="opt"><parameter>...</parameter></methodparam>
+   </methodsynopsis>
+   <para>
+    PHP 5 에서는 클래스의 생성자 메서드를 선언하는것을 허용합니다.
+    클래스는 새로이 생성된 오브젝트마다 자신의 생성자 메서드를 호출합니다.
+    그래서, 객체 초기화를 위해 사용할수 있습니다.
+   </para>
+   <note>
+    <simpara>
+     부모 생성자는 자식클래스가 생성자를 가지고 있을경우 내부적으로 호출되지 않습니다.
+     부모 생성자를 호출하기 위해서는 자식 생성자 내에서 <function>parent::__construct</function> 호출이 필요합니다.
+     자식이 생성자를 가지지 않는다면 다른 일반적인 클래스 메서드처럼 부모클래스의 생성자가 상속됩니다(private 메서드는 제외).
+    </simpara>
+   </note>
+   <example>
+    <title>생성자 사용하기</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+class BaseClass {
+   function __construct() {
+       print "In BaseClass constructor\n";
+   }
+}
+
+class SubClass extends BaseClass {
+   function __construct() {
+       parent::__construct();
+       print "In SubClass constructor\n";
+   }
+}
+
+class OtherSubClass extends BaseClass {
+    // inherits BaseClass's constructor
+}
+
+// In BaseClass constructor
+$obj = new BaseClass();
+
+// In BaseClass constructor
+// In SubClass constructor
+$obj = new SubClass();
+
+// In BaseClass constructor
+$obj = new OtherSubClass();
+?>
+]]>
+    </programlisting>
+   </example>
+   <para>
+    하위 호환성을 위해, PHP 5 가 클래스에서 <link linkend="object.construct">__construct()</link> 함수를 찾지 못할경우,
+    그리고, 부모 클래스로부터 상속하지 않은 경우, 클래스이름에 기반한 예전방식의 생성자를 함수를 찾게 될것입니다.
+    호환성 문제가 생길수 있는 케이스는 클래스가 <link linkend="object.construct">__construct()</link> 메서드를 가진경우 해당 메서드를 다른 의미로 사용하는 경우 입니다.
+   </para>
+   <para>
+    다른 메서드와는 다르게, <link linkend="object.construct">__construct()</link> 가 부모의 <link linkend="object.construct">__construct()</link>와는 다르게 재정의 되어도
+    <constant>E_STRICT</constant> 에러메시지를 발생하지 않습니다.
+   </para>
+   <para>
+    PHP 5.3.3 이후로 네임스페이스 클래스의 마지막 엘리먼트명을 더이상 생성자로 다루지 않습니다.
+    이변경은 비네임스페이스 클래스들에게는 영향을 미치지 않습니다.
+   </para>
+   <example>
+    <title>네임스페이스 클래스의 생성자</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+namespace Foo;
+class Bar {
+    public function Bar() {
+        // treated as constructor in PHP 5.3.0-5.3.2
+        // treated as regular method as of PHP 5.3.3
+    }
+}
+?>
+]]>
+    </programlisting>
+   </example>
+  </sect2>
+
+  <sect2 xml:id="language.oop5.decon.destructor">
+   <title>소멸자</title>
+   <methodsynopsis xml:id="object.destruct">
+    <type>void</type><methodname>__destruct</methodname>
+    <void />
+   </methodsynopsis>
+   <para>
+    PHP 5는 C++과 같은 객체지향 언어에 존재하는 비슷한 개념의 소멸자를 선보였습니다.
+    소멸자 메서드는 더이상 객체를 참조하지 않거나, 종료가 일어나는동안 호출될수 있을 것입니다.
+   </para>
+   <example>
+    <title>소멸자 예제</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+class MyDestructableClass {
+   function __construct() {
+       print "In constructor\n";
+       $this->name = "MyDestructableClass";
+   }
+
+   function __destruct() {
+       print "Destroying " . $this->name . "\n";
+   }
+}
+
+$obj = new MyDestructableClass();
+?>
+]]>
+    </programlisting>
+   </example>
+   <para>
+    생성자처럼, 부모 소멸자는 묵시적으로 호출되지 않습니다.
+    부모 소멸자를 호출하기 위해서는, 소멸자 내부에서 <function>parent::__destruct</function> 를 명시적으로 호출해 줘야 합니다.
+    또한 생성자처럼, 자식 클래스가 소멸자를 가지지 않는다면 부모의 것을 상속합니다.
+   </para>
+   <para>
+    소멸자는 <function>exit</function> 로 스크립트 실행이 중단되더라도 실행됩니다.
+    소멸자 내부에서 <function>exit</function> 를 호출 하는 것은 남은 종료 루틴을 막게 됩니다.
+   </para>
+   <note>
+    <para>
+     스크립트가 종료되는 동안에 소멸자가 호출된 경우 HTTP 헤더는 이미 보내진 뒤입니다.
+     스크립트가 종료될때의 작업디렉터리는 SAPI 마다 다를수 있습니다.(예를 들면 Apache)
+    </para>
+   </note>
+   <note>
+    <para>
+     소멸자 내부에서 예외를 발생시키려고 시도할경우(스크립트 종료시점) fatal error 를 발생시킵니다.
+    </para>
+   </note>
+  </sect2>
+
+ </sect1>
+
+<!-- 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
+-->


Property changes on: phpdoc/kr/trunk/language/oop5/decon.xml
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
   + native
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.