cvs: phpdoc-ja /language/oop5 overloading.xml /reference/bbcode book.xml /reference/phar PharData.xml /reference/phar/Phar compress.xml
/reference/phar/PharData buildFromIterator.xml compressAllFilesBZIP2.xml compressAllFilesGZ.xml construct.xml convertToPhar.xml convertToTar.xml
convertToZip.xml copy.xml delMetadata.xml offsetSet.xml setAlias.xml setStub.xml

From: Date: Fri, 28 Mar 2008 22:01:43 +0000
Subject: cvs: phpdoc-ja /language/oop5 overloading.xml /reference/bbcode book.xml /reference/phar PharData.xml /reference/phar/Phar compress.xml
/reference/phar/PharData buildFromIterator.xml compressAllFilesBZIP2.xml compressAllFilesGZ.xml construct.xml convertToPhar.xml convertToTar.xml
convertToZip.xml copy.xml delMetadata.xml offsetSet.xml setAlias.xml setStub.xml
Groups: php.doc.ja 
Request: Send a blank email to doc-ja+get-2289@lists.php.net to get a copy of this message
takagi Fri Mar 28 22:01:43 2008 UTC Added files: /phpdoc-ja/reference/phar/PharData setStub.xml setAlias.xml offsetSet.xml delMetadata.xml copy.xml convertToZip.xml convertToTar.xml convertToPhar.xml construct.xml compressAllFilesGZ.xml compressAllFilesBZIP2.xml buildFromIterator.xml /phpdoc-ja/reference/phar/Phar compress.xml /phpdoc-ja/reference/phar PharData.xml Modified files: /phpdoc-ja/reference/bbcode book.xml /phpdoc-ja/language/oop5 overloading.xml Log: sync with en.

http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/bbcode/book.xml?r1=1.3&r2=1.4&diff_format=u Index: phpdoc-ja/reference/bbcode/book.xml diff -u phpdoc-ja/reference/bbcode/book.xml:1.3 phpdoc-ja/reference/bbcode/book.xml:1.4 --- phpdoc-ja/reference/bbcode/book.xml:1.3 Sat Dec 29 04:38:37 2007 +++ phpdoc-ja/reference/bbcode/book.xml Fri Mar 28 22:01:42 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.3 $ --> -<!-- EN-Revision: 1.4 Maintainer: takagi Status: ready --> +<!-- $Revision: 1.4 $ --> +<!-- EN-Revision: 1.5 Maintainer: takagi Status: ready --> <!-- Membership: external, pecl --> <book xml:id="book.bbcode" xmlns="http://docbook.org/ns/docbook"> @@ -26,6 +26,7 @@ &reference.bbcode.setup; &reference.bbcode.constants; + &reference.bbcode.reference; </book> http://cvs.php.net/viewvc.cgi/phpdoc-ja/language/oop5/overloading.xml?r1=1.14&r2=1.15&diff_format=u Index: phpdoc-ja/language/oop5/overloading.xml diff -u phpdoc-ja/language/oop5/overloading.xml:1.14 phpdoc-ja/language/oop5/overloading.xml:1.15 --- phpdoc-ja/language/oop5/overloading.xml:1.14 Sat Mar 1 05:55:22 2008 +++ phpdoc-ja/language/oop5/overloading.xml Fri Mar 28 22:01:42 2008 @@ -1,34 +1,93 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.14 $ --> -<!-- EN-Revision: 1.25 Maintainer: hirokawa Status: ready --> -<!-- CREDITS: shimooka --> +<!-- $Revision: 1.15 $ --> +<!-- EN-Revision: 1.27 Maintainer: takagi Status: ready --> +<!-- CREDITS: hirokawa,shimooka --> <sect1 xml:id="language.oop5.overloading" xmlns="http://docbook.org/ns/docbook"> <title>オーバーロード</title> <para> - メソッド呼び出しとメンバーへのアクセスのいずれについても、 - __call, __get そして __set メソッドを通してオーバーロードすることができます。 - オブジェクトや継承されたオブジェクトが - アクセスしようとしている <modifier>public</modifier> - メンバーもしくはメソッドを含んでいない場合でも、 - これらのメソッドは実行されます。 - オーバーロードしている全てのメソッドは - <link linkend="language.oop5.visibility">public</link> - として定義されていなければなりません。 + PHP におけるオーバーロード機能は、 + メンバーやメソッドを動的に + <quote>作成する</quote> ための手法です。 + これらの動的エンティティは、マジックメソッドを用いて処理されます。 + マジックメソッドは、クラス内でさまざまなアクションに対して用意することができます。 </para> + <para> - PHP 5.1.0 以降、__isset や __unset メソッドを通じて - <function>isset</function> 関数や <function>unset</function> - 関数を個々にオーバーロードする事も可能です。 - メソッド __isset は、<function>empty</function> でもコールされます。 + オーバーロードメソッドが起動するのは、 + 宣言されていないメンバーやメソッドを操作しようとしたときです。 + また、現在のスコープからは + <link linkend="language.oop5.visibility">アクセス不能な</link> + メンバーやメソッドを操作しようとしたときにも起動します。 + このセクションでは、これらの (宣言されていない、 + あるいは現在のスコープからはアクセス不能な) メンバーやメソッドのことを + <quote>アクセス不能メンバー</quote> および + <quote>アクセス不能メソッド</quote> + と表記することにします。 </para> + <para> - PHP 5.3.0 では、 - <link linkend="language.oop5.static">static</link> - メソッドのオーバーロードも __callStatic でできるようになりました。 +<!-- +Test scripts indicate otherwise. +Will communicate with internals to see what's up. +http://bugs.php.net/bug.php?id=43924 +--> + オーバーロードメソッドは、すべて <literal>public</literal> + で定義しなければなりません。 </para> + <note> + <para> + これらのマジックメソッドの引数は、 + <link linkend="functions.arguments.by-reference">参照渡し</link> + とすることはできません。 + </para> + </note> + + <note> + <para> + PHP における <quote>オーバーロード</quote> + の解釈は、他の多くのオブジェクト指向言語とは異なります。 + 一般的に「オーバーロード」とは、 + 「名前は同じだけれども引数の数や型が異なるメソッドを複数用意できる」 + という機能のことを指します。 + </para> + </note> + + + <sect2 xml:id="language.oop5.overloading.changelog"> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>5.1.0</entry> + <entry> + <literal>__isset()</literal> と <literal>__unset()</literal> + が追加されました。 + </entry> + </row> + <row> + <entry>5.3.0</entry> + <entry> + <literal>__callStatic()</literal> が追加されました。 + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </sect2> + + <sect2 xml:id="language.oop5.overloading.members"> <title>メンバーのオーバーロード</title> @@ -51,121 +110,134 @@ </methodsynopsis> <para> - 独自のクラスで定義されているカスタムコードを実行するために、 - 特別な名前を持つメソッドによってクラスメンバーをオーバーロード - することができます。 - 使用される <varname>$name</varname> パラメータは、 - 設定あるいは取得される変数名です。 - __set() メソッドの <varname>$value</varname> パラメータにより - オブジェクトが <varname>$name</varname> に設定する値を指定します。 + <literal>__set()</literal> は、 + アクセス不能メンバーへデータを書き込む際に実行されます。 + </para> + + <para> + <literal>__get()</literal> は、 + アクセス不能メンバーからデータを読み込む際に使用します。 </para> - <note> - <para> - <literal>__set()</literal> メソッドでは、引数を参照渡しで受け取ることはできません。 - </para> - </note> + <para> + <literal>__isset()</literal> は、 + <function>isset</function> あるいは <function>empty</function> + をアクセス不能メンバーに対して実行したときに起動します。 + </para> + + <para> + <literal>__unset()</literal> は、 + <function>unset</function> + をアクセス不能メンバーに対して実行したときに起動します。 + </para> + + <para> + 引数 <varname>$name</varname> は、 + 操作しようとしたメンバーの名前です。 + <literal>__set()</literal> メソッドの引数 + <varname>$value</varname> は、 + <varname>$name</varname> に設定しようとした値となります。 + </para> + + <para> + メンバーのオーバーロードはオブジェクトのコンテキストでのみ動作します。 + これらのマジックメソッドは、静的コンテキストでは起動しません。 + したがって、これらのメソッドは + <link linkend="language.oop5.static">static</link> + 宣言することはできません。 + </para> <example> <title>__get, __set, __isset, __unset を使ったオーバーロードの例</title> <programlisting role="php"> <![CDATA[ <?php -class Setter -{ - public $n; - private $x = array("a" => 1, "b" => 2, "c" => 3); - - public function __get($nm) - { - echo "Getting [$nm]\n"; - - if (isset($this->x[$nm])) { - $r = $this->x[$nm]; - print "Returning: $r\n"; - return $r; - } else { - echo "Nothing!\n"; - } +class MemberTest { + /** オーバーロードされるデータの場所 */ + private $data = array(); + + /** 宣言されているメンバーにはオーバーロードは起動しません */ + public $declared = 1; + + /** クラス内からアクセスした場合にはオーバーロードは起動しません */ + private $hidden = 2; + + public function __set($name, $value) { + echo "Setting '$name' to '$value'\n"; + $this->data[$name] = $value; } - public function __set($nm, $val) - { - echo "Setting [$nm] to $val\n"; - - if (isset($this->x[$nm])) { - $this->x[$nm] = $val; - echo "OK!\n"; - } else { - echo "Not OK!\n"; + public function __get($name) { + echo "Getting '$name'\n"; + if (array_key_exists($name, $this->data)) { + return $this->data[$name]; } - } - public function __isset($nm) - { - echo "Checking if $nm is set\n"; + $trace = debug_backtrace(); + trigger_error( + 'Undefined property: ' . $name . + ' in ' . $trace[0]['file'] . + ' on line ' . $trace[0]['line'], + E_USER_NOTICE); + $tmp = null; + return $tmp; + } - return isset($this->x[$nm]); + /** PHP 5.1.0 以降 */ + public function __isset($name) { + echo "Is '$name' set?\n"; + return isset($this->data[$name]); } - public function __unset($nm) - { - echo "Unsetting $nm\n"; + /** PHP 5.1.0 以降 */ + public function __unset($name) { + echo "Unsetting '$name'\n"; + unset($this->data[$name]); + } - unset($this->x[$nm]); + /** マジックメソッドではありません。単なる例として示しています */ + public function getHidden() { + echo "'hidden' visible here so __get() not used\n"; + return $this->hidden; } } -$foo = new Setter(); -$foo->n = 1; -$foo->a = 100; -$foo->a++; -$foo->z++; - -var_dump(isset($foo->a)); //true -unset($foo->a); -var_dump(isset($foo->a)); //false - -// this doesn't pass through the __isset() method -// because 'n' is a public property -var_dump(isset($foo->n)); -var_dump($foo); +echo "<pre>\n"; + +$obj = new MemberTest; + +$obj->a = 1; +echo $obj->a . "\n"; + +var_dump(isset($obj->a)); +unset($obj->a); +var_dump(isset($obj->a)); + +echo $obj->declared . "\n"; +echo $obj->getHidden() . "\n"; +echo $obj->hidden . "\n"; ?> ]]> </programlisting> &example.outputs; <screen role="php"> <![CDATA[ -Setting [a] to 100 -OK! -Getting [a] -Returning: 100 -Setting [a] to 101 -OK! -Getting [z] -Nothing! -Setting [z] to 1 -Not OK! - -Checking if a is set +Setting 'a' to '1' +Getting 'a' +1 +Is 'a' set? bool(true) -Unsetting a -Checking if a is set +Unsetting 'a' +Is 'a' set? bool(false) -bool(true) +1 +'hidden' visible here so __get() not used +2 +Getting 'hidden' -object(Setter)#1 (2) { - ["n"]=> - int(1) - ["x":"Setter":private]=> - array(2) { - ["b"]=> - int(2) - ["c"]=> - int(3) - } -} + +Notice: Undefined property: hidden in <file> on line 64 in <file> on line 28 ]]> </screen> @@ -187,100 +259,53 @@ </methodsynopsis> <para> - 特別なメソッド __call() および __callStatic() を使用すると、 - 存在しないメソッドの呼び出しを捕捉することができます。 - これらのメソッドを使用すると、実際にコールされたメソッドの名前に応じた - ユーザ定義の処理を実装することができます。 - これは、たとえばプロキシを実装する場合などに便利です。 - 関数に渡された引数はパラメータ - <varname>$arguments</varname> で受け取ることができ、 - これらのメソッドの返り値が呼び出し元のメソッドの返り値となります。 + <literal>__call()</literal> は、 + アクセス不能メソッドをオブジェクトのコンテキストで実行したときに起動します。 </para> + <para> + <literal>__callStatic()</literal> は、 + アクセス不能メソッドを静的コンテキストで実行したときに起動します。 + </para> + + <para> + 引数 <varname>$name</varname> は、 + コールしようとしたメソッドの名前です。 + 引数 <varname>$arguments</varname> + は配列で、メソッド <varname>$name</varname> + に渡そうとしたパラメータが格納されます。 + </para> <example> - <title>__call による、インスタンス化されたメソッドのオーバーロードの例</title> + <title>__call および ___callStatic による、インスタンス化されたメソッドのオーバーロードの例</title> <programlisting role="php"> <![CDATA[ <?php -class Caller -{ - private $x = array(10, 20); - - public function __call($m, $a) - { - print "Instantiated method '$m' called:\n"; - var_dump($a); - return $this->x; +class MethodTest { + public function __call($name, $arguments) { + echo "Calling object method '$name' " + . implode(', ', $arguments). "\n"; } -} - -$foo = new Caller(); -$a = $foo->test('a', 'b'); -var_dump($a); -?> -]]> - </programlisting> - &example.outputs; - <screen role="php"> -<![CDATA[ - -Instantiated method 'test' called: -array(2) { - [0]=> - string(1) "a" - [1]=> - string(1) "b" -} -array(2) { - [0]=> - int(10) - [1]=> - int(20) -} -]]> - </screen> - </example> - <example> - <title>__call による、インスタンス化されたメソッドのオーバーロードの例</title> - <programlisting role="php"> - <![CDATA[ -<?php -class Caller -{ - private static $x = array(10, 20); - - public static function __callStatic($m, $a) - { - print "Static method '$m' called:\n"; - var_dump($a); - return self::$x; + /** PHP 5.3.0 以降 */ + public static function __callStatic($name, $arguments) { + echo "Calling static method '$name' " + . implode(', ', $arguments). "\n"; } } -$a = Caller::test('a', 'b'); -var_dump($a); +$obj = new MethodTest; +$obj->test('in object context'); + +MethodTest::test('in static context'); // PHP 5.3.0 以降 ?> ]]> </programlisting> &example.outputs; <screen role="php"> <![CDATA[ - -Static method 'test' called: -array(2) { - [0]=> - string(1) "a" - [1]=> - string(1) "b" -} -array(2) { - [0]=> - int(10) - [1]=> - int(20) -} +Calling object method 'test' in object context +Calling static method 'test' in static context ]]> </screen> </example> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/setStub.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/setStub.xml +++ phpdoc-ja/reference/phar/PharData/setStub.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="phardata.setstub"> <refnamediv> <refname>PharData::setStub</refname> <refpurpose>ダミー関数 (Phar::setStub は PharData では使用不能)</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>void</type><methodname>PharData::setStub</methodname> <methodparam><type>string</type><parameter>stub</parameter></methodparam> </methodsynopsis> <para> 実行可能でない tar/zip アーカイブはスタブを持つことができないので、 このメソッドは単に例外をスローします。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>stub</parameter></term> <listitem> <para> 文字列あるいはオープンしたストリームハンドル。 この phar アーカイブの実行スタブとして使用します。 このパラメータは無視されます。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> このメソッドがコールされると必ず <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::setStub</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/setAlias.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/setAlias.xml +++ phpdoc-ja/reference/phar/PharData/setAlias.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.setalias" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::setAlias</refname> <refpurpose>ダミー関数 (Phar::setAlias は PharData では使用不能)</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::setAlias</methodname> <methodparam><type>string</type><parameter>alias</parameter></methodparam> </methodsynopsis> <para> 実行可能でない tar/zip アーカイブはエイリアスを持つことができないので、 このメソッドは単に例外をスローします。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>alias</parameter></term> <listitem> <para> このアーカイブを指すときに使用する短い文字列。 <literal>phar</literal> ストリームラッパーがアクセスする際にこれを使用します。 このパラメータは無視されます。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> このメソッドがコールされると必ず <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::setAlias</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/offsetSet.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/offsetSet.xml +++ phpdoc-ja/reference/phar/PharData/offsetSet.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="phardata.offsetset"> <refnamediv> <refname>PharData::offsetSet</refname> <refpurpose>tar/zip の内部のファイルに、外部ファイルあるいは文字列の内容を設定する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>void</type><methodname>PharData::offsetSet</methodname> <methodparam><type>string</type><parameter>offset</parameter></methodparam> <methodparam><type>string</type><parameter>value</parameter></methodparam> </methodsynopsis> <para> これは <interfacename>ArrayAccess</interfacename> インターフェイスを実装したものです。 これにより、tar/zip アーカイブの内容に対して配列形式の角括弧を使用したアクセスが可能となります。 offsetSet を使用して、tar/zip アーカイブの既存ファイルの変更や 新しいファイルの追加を行います。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>offset</parameter></term> <listitem> <para> tar あるいは zip アーカイブ内で変更するファイル名 (相対パス)。 </para> </listitem> </varlistentry> <varlistentry> <term><parameter>value</parameter></term> <listitem> <para> ファイルの内容。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> 値を返しません。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> Phar アーカイブへの変更をディスクに書き込む際に何らかのエラーが発生すると <classname>PharException</classname> がスローされます。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::offsetSet</function> の例</title> <para> offsetSet は直接使用してはいけません。 配列に <literal>[]</literal> 演算子でアクセスする際に使用されます。 </para> <programlisting role="php"> <![CDATA[ <?php $p = new PharData('/path/to/my.tar'); try { // offsetSet がコールされます $p['file.txt'] = 'Hi there'; } catch (Exception $e) { echo 'file.txt を変更できません: ', $e; } ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::offsetSet</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/delMetadata.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/delMetadata.xml +++ phpdoc-ja/reference/phar/PharData/delMetadata.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.delmetadata" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::delMetadata</refname> <refpurpose>zip アーカイブのグローバルメタデータを削除する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>int</type><methodname>PharData::delMetadata</methodname> <void/> </methodsynopsis> &phar.write; <para> zip アーカイブのグローバルメタデータを削除します。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> 成功した場合に &true; を返します。しかし、より安全を期すなら 例外がスローされないことを確認するといいでしょう。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> 変更をディスクに書き戻す際にエラーが発生した場合は <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::delMetaData</function> の例</title> <programlisting role="php"> <![CDATA[ <?php try { $phar = new PharData('myphar.zip'); var_dump($phar->getMetadata()); $phar->setMetadata("hi there"); var_dump($phar->getMetadata()); $phar->delMetadata(); var_dump($phar->getMetadata()); } catch (Exception $e) { // エラー処理 } ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ NULL string(8) "hi there" NULL ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::delMetadata</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/copy.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/copy.xml +++ phpdoc-ja/reference/phar/PharData/copy.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.copy" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::copy</refname> <refpurpose>phar アーカイブ内のファイルを、phar 内で別の新しいファイルとしてコピーする</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::copy</methodname> <methodparam><type>string</type><parameter>oldfile</parameter></methodparam> <methodparam><type>string</type><parameter>newfile</parameter></methodparam> </methodsynopsis> <para> phar アーカイブ内のファイルを、そのアーカイブ内で別の新しいファイルとしてコピーします。 これは、phar ストリームラッパーでの <function>copy</function> と同等の操作をオブジェクト指向で行うものです。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>oldfile</parameter></term> <listitem> <para> </para> </listitem> </varlistentry> <varlistentry> <term><parameter>newfile</parameter></term> <listitem> <para> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> 成功した場合に &true; を返します。しかし、より安全を期すなら try/catch ブロック内で使用して例外がスローされないことを確認するといいでしょう。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> コピー元のファイルが存在しない、コピー先のファイルが既に存在する、 書き込みアクセスが無効になっている、どちらかのファイルのオープンに失敗した、 あるいはコピー元のファイルの読み込みに失敗した場合に <classname>UnexpectedValueException</classname> をスローします。 変更内容の phar への書き込みに失敗した場合は <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::copy</function> の例</title> <para> この例は、<function>PharData::copy</function> の使用法のほかに それと同等の操作をストリームラッパーで行う方法を示すものです。 これらの方式の最大の違いはエラー処理です。 PharData のすべてのメソッドは例外をスローしますが、ストリームラッパーの場合は <function>trigger_error</function> を使用します。 </para> <programlisting role="php"> <![CDATA[ <?php try { $phar = new PharData('myphar.tar'); $phar['a'] = 'hi'; $phar->copy('a', 'b'); echo $phar['b']; // 出力は "hi" } catch (Exception $e) { // エラー処理 } // 上のコードと同等の処理をストリームラッパーで行う例。 // エラー時には例外ではなく E_WARNINGS が発生します copy('phar://myphar.tar/a', 'phar//myphar.tar/c'); echo file_get_contents('phar://myphar.tar/c'); // 出力は "hi" ?> ]]> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/convertToZip.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/convertToZip.xml +++ phpdoc-ja/reference/phar/PharData/convertToZip.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.converttozip" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::convertToZip</refname> <refpurpose>tar アーカイブを zip ファイル形式に変換する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::convertToZip</methodname> <methodparam><type>string</type><parameter>extension</parameter></methodparam> </methodsynopsis> <para> このメソッドは、phar 形式あるいは tar 形式の phar アーカイブを zip ファイル形式に変換します。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>extension</parameter></term> <listitem> <para> デフォルトでは、tar アーカイブから変換する際の拡張子は <literal>.zip</literal> となります。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> このメソッドは、成功した場合に <classname>PharData</classname> オブジェクトを返します。 失敗した場合には例外をスローします。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> 圧縮ができない場合や無効な圧縮方式が指定された場合、あるいは <function>Phar::startBuffering</function> でバッファリングしたまま <function>Phar::stopBuffering</function> を実行していないアーカイブを処理しようとした場合に <classname>BadMethodCallException</classname> をスローします。 また、書き込みサポートが無効な場合に <classname>UnexpectedValueException</classname>、 zip 作成中に何らかの問題が発生した場合に <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::convertToZip</function> の例</title> <para> PharData::convertToZip() の使用法です。 </para> <programlisting role="php"> <![CDATA[ <?php try { $tar = new PharData('myphar.tar.gz'); // zip ファイル形式に変換します $zip = $tar->convertToZip(); } catch (Exception $e) { // ここでエラー処理をします } ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::convertToZip</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/convertToTar.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/convertToTar.xml +++ phpdoc-ja/reference/phar/PharData/convertToTar.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.converttotar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::convertToTar</refname> <refpurpose>zip アーカイブを tar ファイル形式に変換する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::convertToTar</methodname> <methodparam><type>string</type><parameter>extension</parameter></methodparam> </methodsynopsis> <para> このメソッドは、phar 形式あるいは zip 形式の phar アーカイブを tar ファイル形式に変換します。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>extension</parameter></term> <listitem> <para> デフォルトでは、zip アーカイブから変換する際の拡張子は <literal>.tar</literal> となります。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> このメソッドは、成功した場合に <classname>PharData</classname> オブジェクトを返します。 失敗した場合には例外をスローします。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> 圧縮ができない場合や無効な圧縮方式が指定された場合、あるいは <function>Phar::startBuffering</function> でバッファリングしたまま <function>Phar::stopBuffering</function> を実行していないアーカイブを処理しようとした場合に <classname>BadMethodCallException</classname> をスローします。 また、書き込みサポートが無効な場合に <classname>UnexpectedValueException</classname>、 tar 作成中に何らかの問題が発生した場合に <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::convertToTar</function> の例</title> <para> PharData::convertToTar() の使用法です。 </para> <programlisting role="php"> <![CDATA[ <?php try { $zip = new PharData('myphar.zip'); $tar = $zip->convertToTar(); } catch (Exception $e) { // ここでエラー処理をします } ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::convertToTar</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/convertToPhar.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/convertToPhar.xml +++ phpdoc-ja/reference/phar/PharData/convertToPhar.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.converttophar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::convertToPhar</refname> <refpurpose>tar/zip アーカイブを phar ファイル形式に変換する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::convertToPhar</methodname> <methodparam><type>string</type><parameter>extension</parameter></methodparam> </methodsynopsis> &phar.write; <para> このメソッドは、tar/zip アーカイブを 実行可能な phar ファイル形式に変換します。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>extension</parameter></term> <listitem> <para> デフォルトの拡張子は、未圧縮の tar アーカイブあるいは zip アーカイブから変換した場合は <literal>.phar</literal> となります。また zlib 圧縮された tar アーカイブから変換した場合は <literal>.phar.gz</literal>、bzip2 圧縮された tar アーカイブから変換した場合は <literal>.phar.bz2</literal> となります。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> このメソッドは、成功した場合に <classname>Phar</classname> オブジェクトを返します。 失敗した場合には例外をスローします。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> 圧縮ができない場合や無効な圧縮方式が指定された場合、あるいは <function>Phar::startBuffering</function> でバッファリングしたまま <function>Phar::stopBuffering</function> を実行していないアーカイブを処理しようとした場合に <classname>BadMethodCallException</classname> をスローします。 また、書き込みサポートが無効な場合に <classname>UnexpectedValueException</classname>、 phar 作成中に何らかの問題が発生した場合に <classname>PharException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::convertToPhar</function> の例</title> <para> PharData::convertToPhar() の使用法です。 </para> <programlisting role="php"> <![CDATA[ <?php try { $tarphar = new PharData('myphar.tar'); // phar フォーマットに変換します // myphar.tar は削除「されない」ことに注意しましょう $phar = $tarphar->convertToPhar(); // creates myphar.phar $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php')); } catch (Exception $e) { // ここでエラー処理をします } ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::convertToPhar</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/construct.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/construct.xml +++ phpdoc-ja/reference/phar/PharData/construct.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="phardata.construct"> <refnamediv> <refname>PharData::__construct</refname> <refpurpose>実行可能でない tar あるいは zip アーカイブオブジェクトを作成する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>void</type><methodname>PharData::__construct</methodname> <methodparam><type>string</type><parameter>fname</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>flags</parameter></methodparam> </methodsynopsis> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>fname</parameter></term> <listitem> <para> 既存の tar/zip アーカイブあるいは作成したいアーカイブへのパス。 </para> </listitem> </varlistentry> <varlistentry> <term><parameter>flags</parameter></term> <listitem> <para> 親クラス <classname>Phar</classname> の <classname>RecursiveDirectoryIterator</classname> に渡すフラグ。 <link xlink:href="http://www.php.net/~helly/php/ext/spl/classRecursiveDirectoryIterator.html#be0e1176d512c66500e5c26f248c89c4">SPL RecursiveDirectoryIterator のドキュメント</link> を参照ください。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> 2 度コールされた場合に BadMethodCallException、 phar アーカイブのオープンに失敗した場合に UnexpectedValueException をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::__construct</function> の例</title> <para> <programlisting role="php"> <![CDATA[ <?php try { $p = new PharData('/path/to/my.tar', CURRENT_AS_FILEINFO | KEY_AS_FILENAME); } catch (UnexpectedValueException $e) { die('Could not open my.tar'); } catch (BadMethodCallException $e) { echo 'technically, this cannot happen'; } echo file_get_contents('phar:///path/to/my.tar/example.txt'); ?> ]]> </programlisting> </para> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/compressAllFilesGZ.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/compressAllFilesGZ.xml +++ phpdoc-ja/reference/phar/PharData/compressAllFilesGZ.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="phardata.compressallfilesgz"> <refnamediv> <refname>PharData::compressAllFilesGZ</refname> <refpurpose>現在の tar/zip アーカイブ内のすべてのファイルを Gzip で圧縮する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::compressAllFilesGZ</methodname> <void/> </methodsynopsis> <para> tar アーカイブの場合、このメソッドは失敗して <classname>PharException</classname> となります。 tar フォーマットで個別のファイルを圧縮することはできないからです。 tar アーカイブ全体を圧縮するには <function>PharData::compress</function> を使用します。 </para> <para> zip アーカイブの場合は、このメソッドは Phar アーカイブ内のすべてのファイルを gzip で圧縮します。 この機能を使用するには <link linkend="ref.zlib">zlib</link> 拡張モジュールが有効になっていなければなりません。 また、すでに bzip2 で圧縮されているファイルを処理するためには、 まず bzip2 を伸張してから gzip で再圧縮するため、 <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが有効になっていなければなりません。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> INI 設定 <link linkend="ini.phar.readonly">phar.readonly</link> が on の場合、<link linkend="ref.zlib">zlib</link> 拡張モジュールが使用できない場合、あるいは bzip2 で圧縮されたファイルがあるのに <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが使用できない場合に <classname>BadMethodCallException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::compressAllFilesGZ</function> の例</title> <programlisting role="php"> <![CDATA[ <?php $p = new PharData('/path/to/my.zip'); $p['myfile.txt'] = 'hi'; $p['myfile2.txt'] = 'hi'; foreach ($p as $file) { var_dump($file->getFileName()); var_dump($file->isCompressed()); var_dump($file->isCompressedBZIP2()); var_dump($file->isCompressedGZ()); } $p->compressAllFilesGZ(); foreach ($p as $file) { var_dump($file->getFileName()); var_dump($file->isCompressed()); var_dump($file->isCompressedBZIP2()); var_dump($file->isCompressedGZ()); } ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ string(10) "myfile.txt" bool(false) bool(false) bool(false) string(11) "myfile2.txt" bool(false) bool(false) bool(false) string(10) "myfile.txt" bool(true) bool(false) bool(true) string(11) "myfile2.txt" bool(true) bool(false) bool(true) ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::compressAllFilesGZ</function></member> <member><function>PharData::compress</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/compressAllFilesBZIP2.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/compressAllFilesBZIP2.xml +++ phpdoc-ja/reference/phar/PharData/compressAllFilesBZIP2.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="phardata.compressallfilesbzip2"> <refnamediv> <refname>PharData::compressAllFilesBZIP2</refname> <refpurpose>現在の tar/zip アーカイブ内のすべてのファイルを Bzip2 で圧縮する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>bool</type><methodname>PharData::compressAllFilesBZIP2</methodname> <void/> </methodsynopsis> <para> tar アーカイブの場合、このメソッドは失敗して <classname>PharException</classname> となります。 tar フォーマットで個別のファイルを圧縮することはできないからです。 tar アーカイブ全体を圧縮するには <function>PharData::compress</function> を使用します。 </para> <para> このメソッドは、zip アーカイブ内のすべてのファイルを bzip2 で圧縮します。この機能を使用するには <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが有効になっていなければなりません。 また、すでに gzip で圧縮されているファイルを処理するためには、 まず gzip を伸張してから bzip2 で再圧縮するため、 <link linkend="ref.zlib">zlib</link> 拡張モジュールが有効になっていなければなりません。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが使用できない場合、あるいは gzip で圧縮されたファイルがあるのに <link linkend="ref.zlib">zlib</link> 拡張モジュールが使用できない場合に <classname>BadMethodCallException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>PharData::compressAllFilesBZIP2</function> の例</title> <programlisting role="php"> <![CDATA[ <?php $p = new PharData('/path/to/my.zip'); $p['myfile.txt'] = 'hi'; $p['myfile2.txt'] = 'hi'; foreach ($p as $file) { var_dump($file->getFileName()); var_dump($file->isCompressed()); var_dump($file->isCompressedBZIP2()); var_dump($file->isCompressedGZ()); } $p->compressAllFilesBZIP2(); foreach ($p as $file) { var_dump($file->getFileName()); var_dump($file->isCompressed()); var_dump($file->isCompressedBZIP2()); var_dump($file->isCompressedGZ()); } ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ string(10) "myfile.txt" bool(false) bool(false) bool(false) string(11) "myfile2.txt" bool(false) bool(false) bool(false) string(10) "myfile.txt" bool(true) bool(true) bool(false) string(11) "myfile2.txt" bool(true) bool(true) bool(false) ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::compressAllFilesBZIP2</function></member> <member><function>PharData::compress</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData/buildFromIterator.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData/buildFromIterator.xml +++ phpdoc-ja/reference/phar/PharData/buildFromIterator.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <refentry xml:id="phardata.buildfromiterator" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>PharData::buildFromIterator</refname> <refpurpose>イテレータから tar あるいは zip アーカイブを作成する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>array</type><methodname>PharData::buildFromIterator</methodname> <methodparam><type>Iterator</type><parameter>iter</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>base_directory</parameter></methodparam> </methodsynopsis> <para> tar あるいは zip アーカイブをイテレータから作成します。 サポートするイテレータは二種類で、 tar/zip 内のファイル名とディスク上の実際のファイル名を対応させたものか、あるいは DirectoryIterator のように SplFileInfo オブジェクトを返すものです。 SplFileInfo オブジェクトを返すイテレータの場合は、2 番目のパラメータが必要となります。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <example> <title>SplFileInfo を使用した <function>PharData::buildFromIterator</function> の例</title> <para> ほとんどの tar/zip アーカイブは、実際のディレクトリ構造を反映した形式になっています。 このような場合は 2 番目の方式が最適です。 たとえば、次のようなディレクトリ構成のファイルを含む tar/zip アーカイブを作成してみることにしましょう。 </para> <para> <screen> <![CDATA[ /path/to/project/ config/ dist.xml debug.xml lib/ file1.php file2.php src/ processthing.php www/ index.php cli/ index.php ]]> </screen> </para> <para> 次のコードを使用すると、これらのファイルを tar アーカイブ &quot;project.tar&quot; に追加します。 </para> <para> <programlisting role="php"> <![CDATA[ <?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new RecursiveIteratorIterator( new RecursiveDirectoryIterator('/path/to/project')), '/path/to/project'); ?> ]]> </programlisting> </para> <para> これで、ファイル <literal>project.tar</literal> はすぐに使えるようになります。 <function>buildFromIterator</function> は圧縮やメタデータの設定を行いません。 これらは tar/zip アーカイブを作成した後で行うことができます。 </para> <para> 興味深いことに、<function>buildFromIterator</function> を使用して既存の phar や tar、あるいは zip アーカイブの中身をコピーすることもできます。 というのも PharData オブジェクトは <classname>DirectoryIterator</classname> を継承しているからです。 </para> <para> <programlisting role="php"> <![CDATA[ <?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new RecursiveIteratorIterator( new Phar('/path/to/anotherphar.phar')), 'phar:///path/to/anotherphar.phar/path/to/project'); $phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php')); ?> ]]> </programlisting> </para> </example> <example> <title>その他のイテレータを使用した <function>PharData::buildFromIterator</function> の例</title> <para> それ以外の形式のイテレータでは、 key => value の対応を返すものを使用できます。たとえば <classname>ArrayIterator</classname> などです。 </para> <para> <programlisting role="php"> <![CDATA[ <?php $phar = new PharData('project.tar'); $phar->buildFromIterator( new ArrayIterator( array( 'internal/file.php' => dirname(__FILE__) . '/somefile.php', 'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'), ))); ?> ]]> </programlisting> </para> </example> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>iter</parameter></term> <listitem> <para> phar ファイルと実際の場所の関連を返すイテレータ、 あるいは SplFileInfo オブジェクトを返すイテレータ。 </para> </listitem> </varlistentry> <varlistentry> <term><parameter>base_directory</parameter></term> <listitem> <para> SplFileInfo オブジェクトを返すイテレータを指定した際、 tar/zip アーカイブへの追加時にフルパスから取り除く部分。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> <function>buildFromIterator</function> は連想配列を返します。 これは、ファイルの内部パスとファイルシステム上のフルパスを対応させたものです。 </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> このメソッドは、イテレータが間違った値 (たとえば文字列キーではなく整数キーなど) を返した場合に <classname>UnexpectedValueException</classname> を返します。また、SplFileInfo 型のイテレータを渡したときに <parameter>base_directory</parameter> を指定しなかった場合は <classname>BadMethodCallException</classname> を、 phar アーカイブの保存時にエラーが発生した場合は <classname>PharException</classname> を返します。 </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>Phar::buildFromIterator</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/Phar/compress.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/Phar/compress.xml +++ phpdoc-ja/reference/phar/Phar/compress.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.4 Maintainer: takagi Status: ready --> <refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.compress"> <refnamediv> <refname>Phar::compress</refname> <refpurpose>Phar アーカイブ全体を Gzip あるいは Bzip2 で圧縮する</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>object</type><methodname>Phar::compress</methodname> <methodparam><type>int</type><parameter>compression</parameter></methodparam> </methodsynopsis> &phar.write; <para> tar 形式あるいは phar 形式の phar アーカイブの場合は、 このメソッドはアーカイブ全体を gzip あるいは bzip2 で圧縮します。 できあがったファイルは gunzip/bunzip コマンドで処理することもできますし、 Phar 拡張モジュールで直接透過的に使用することもできます。 </para> <para> zip 形式の phar アーカイブの場合は、このメソッドは失敗して例外が発生します。 gzip で圧縮するためには <link linkend="ref.zlib">zlib</link> 拡張モジュールが、そして bzip2 で圧縮するためには <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが有効になっていなければなりません。 この関数は phar の内容を変更するので、使用するには INI 設定 <link linkend="ini.phar.readonly">phar.readonly</link> が off になっていなければなりません。 </para> <para> さらに、このメソッドは自動的にアーカイブの名前を変更し、 <literal>.gz</literal> あるいは <literal>.bz2</literal> を追加します。<literal>Phar::NONE</literal> を渡して圧縮を解除した場合は拡張子も削除します。 </para> <para> <classname>Phar</classname> オブジェクトを返します。 </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>compression</parameter></term> <listitem> <para> 圧縮を行う場合には <literal>Phar::GZ</literal> あるいは <literal>Phar::BZ2</literal>、圧縮を解除する場合には <literal>Phar::NONE</literal> を指定します。 </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> INI 設定 <link linkend="ini.phar.readonly">phar.readonly</link> が on の場合、<link linkend="ref.zlib">zlib</link> 拡張モジュールが使用できない場合、あるいは <link linkend="ref.bzip2">bzip2</link> 拡張モジュールが使用できない場合に <classname>BadMethodCallException</classname> をスローします。 </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>Phar::compress</function> の例</title> <programlisting role="php"> <![CDATA[ <?php $p = new Phar('/path/to/my.phar', 0, 'my.phar'); $p['myfile.txt'] = 'hi'; $p['myfile2.txt'] = 'hi'; $p1 = $p->compress(Phar::GZ); // /path/to/my.phar.gz にコピーします $p2 = $p->compress(Phar::BZ2); // /path/to/my.phar.bz2 にコピーします $p3 = $p2->compress(Phar::NONE); // 例外: /path/to/my.phar は既に存在します ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>PharFileInfo::getCompressedSize</function></member> <member><function>PharFileInfo::isCompressedBZIP2</function></member> <member><function>PharFileInfo::isCompressed</function></member> <member><function>PharFileInfo::isCompressedGZ</function></member> <member><function>PharFileInfo::setCompressedBZIP2</function></member> <member><function>PharFileInfo::setUncompressed</function></member> <member><function>PharFileInfo::setCompressedGZ</function></member> <member><function>PharData::compress</function></member> <member><function>Phar::canCompress</function></member> <member><function>Phar::isCompressed</function></member> <member><function>Phar::compressAllFilesBZIP2</function></member> <member><function>Phar::getSupportedCompression</function></member> <member><function>Phar::uncompressAllFiles</function></member> </simplelist> </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:"../../../../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 --> http://cvs.php.net/viewvc.cgi/phpdoc-ja/reference/phar/PharData.xml?view=markup&rev=1.1 Index: phpdoc-ja/reference/phar/PharData.xml +++ phpdoc-ja/reference/phar/PharData.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.1 Maintainer: takagi Status: ready --> <reference xml:id="class.PharData" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"> <title>PharData クラス</title> <titleabbrev>PharData</titleabbrev> <partintro> <!-- {{{ Phar intro --> <section xml:id="PharData.intro"> &reftitle.intro; <para> PharData クラスは、実行可能形式でない tar アーカイブや zip アーカイブへのアクセスや作成のための高レベルインターフェイスを提供します。 これらのアーカイブにはスタブが含まれておらず、 phar 拡張モジュールから実行することはできません。 そのため、PharData クラスによる通常の zip および tar ファイルの作成や 操作は php.ini の <literal>phar.readonly</literal> が <literal>1</literal> であっても可能です。 </para> </section> <!-- }}} --> <section xml:id="PharData.synopsis"> &reftitle.classsynopsis; <!-- {{{ Synopsis --> <classsynopsis> <ooclass><classname>PharData</classname></ooclass> <!-- {{{ Class synopsis --> <classsynopsisinfo> <ooclass> <classname>PharData</classname> </ooclass> <ooclass> <modifier>extends</modifier> <classname>Phar</classname> </ooclass> </classsynopsisinfo> <!-- }}} --> <classsynopsisinfo role="comment">プロパティ</classsynopsisinfo> <classsynopsisinfo role="comment">メソッド</classsynopsisinfo> <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.PharData')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" /> <classsynopsisinfo role="comment">継承したメソッド</classsynopsisinfo> <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.Phar')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" /> </classsynopsis> <!-- }}} --> </section> </partintro> &reference.phar.entities.PharData; </reference> <!-- 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:"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 -->
« previous php.doc.ja (#2289) next »