svn: /pear/peardoc/trunk/en/pyrus/extending/ registry.xml

[email protected] (Greg Beaver)
Newsgroups php.pear.doc
Message-ID <[email protected]>
cellog                                   Thu, 06 Aug 2009 18:15:01 +0000

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

Log:
continue pyrus registry documentation

Changed paths:
    U   pear/peardoc/trunk/en/pyrus/extending/registry.xml

Modified: pear/peardoc/trunk/en/pyrus/extending/registry.xml
===================================================================
--- pear/peardoc/trunk/en/pyrus/extending/registry.xml	2009-08-06 17:21:42 UTC (rev 286894)
+++ pear/peardoc/trunk/en/pyrus/extending/registry.xml	2009-08-06 18:15:01 UTC (rev 286895)
@@ -223,8 +223,168 @@
  <section xml:id="pyrus.extending.registry.querying">
   <info><title>Specialized querying of the registry</title></info>
   <para>
-   This document is a work in progress.
+   Other methods for querying the registry include:
+   <itemizedlist>
+    <listitem>
+     <simpara>
+      <function>info</function>
+     </simpara>
+    </listitem>
+    <listitem>
+     <simpara>
+      <function>listPackages</function>
+     </simpara>
+    </listitem>
+    <listitem>
+     <simpara>
+      <function>getDependentPackages</function>
+     </simpara>
+    </listitem>
+    <listitem>
+     <simpara>
+      <function>detectFileConflicts</function>
+     </simpara>
+    </listitem>
+    <listitem>
+     <simpara>
+      <function>detectRegistries</function>
+     </simpara>
+    </listitem>
+    <listitem>
+     <simpara>
+      <function>removeRegistry</function>
+     </simpara>
+    </listitem>
+   </itemizedlist>
   </para>
+  <section xml:id="pyrus.extending.registry.querying.info">
+   <title><function>info</function></title>
+   <para>
+    The <function>info</function> method provides a way of peeking at
+    a single attribute of a package.  When used with the <literal>Sqlite3</literal>
+    registry, it is extremely efficient both in terms of memory use and speed.
+    Both the <literal>Xml</literal> and <literal>Pear1</literal> registries are
+    far slower because they must load the complete packagefile into memory for
+    every query.  For these registries, it is better to simply retrieve a
+    packagefile and query it using the
+    <link linkend="pyrus.extending.packagefile">PackageFile API</link>.
+   </para>
+   <para>
+    Parameters to <function>info</function> are the package name, package channel,
+    and the field name to retrieve.
+   </para>
+   <para>
+    All of the
+    <link linkend="pyrus.extending.packagefile.basic">Basic package.xml properties</link>
+    can be directly accessed using <function>info</function>.  In addition, two
+    special properties, <literal>installedfiles</literal> and <literal>dirtree</literal>
+    are available.
+   </para>
+   <para>
+    <literal>installedfiles</literal> returns a list of files and their properties
+    as they have been installed.  Here is a sample return value:
+   </para>
+   <programlisting role="php">
+    <![CDATA[
+<?php
+array(
+      '/full/path/todocs/PEAR2_SimpleChannelServer/pear2.php.net/examples/update_channel.php' =>
+      array(
+        'role' => 'doc',
+        'name' => 'examples/update_channel.php',
+        'installed_as' => '/full/path/to/docs/PEAR2_SimpleChannelServer/pear2.php.net/examples/update_channel.php',
+        'relativepath' => 'PEAR2_SimpleChannelServer/pear2.php.net/examples/update_channel.php',
+        'configpath' => '/full/path/to/docs',
+           ),
+      // ... and so on
+     );
+?>
+    ]]>
+   </programlisting>
+   <para>
+    <literal>dirtree</literal> returns a list of every directory that would have
+    been created if installing the package in a new installation.  This can
+    be used to prune empty directories after uninstalling.  Here is a sample
+    return value:
+   </para>
+   <programlisting role="php">
+    <![CDATA[
+<?php
+array (
+      '/full/path/to/php/PEAR2/SimpleChannelServer/REST',
+      '/full/path/to/php/PEAR2/SimpleChannelServer/Categories',
+      '/full/path/to/php/PEAR2/SimpleChannelServer',
+      '/full/path/to/php/PEAR2',
+      '/full/path/to/php',
+      '/full/path/to/docs/PEAR2_SimpleChannelServer/pear2.php.net/examples',
+      '/full/path/to/docs/PEAR2_SimpleChannelServer/pear2.php.net',
+      '/full/path/to/docs/PEAR2_SimpleChannelServer',
+      '/full/path/to/docs',
+      '/full/path/to/bin',
+    );
+?>
+    ]]>
+   </programlisting>
+  </section>
+  <section xml:id="pyrus.extending.registry.querying.listpackages">
+   <title><function>listPackages</function></title>
+   <para>
+    This method accepts a channel name as an argument, and returns an array
+    of the names of installed packages from that channel.
+   </para>
+  </section>
+  <section xml:id="pyrus.extending.registry.querying.getdependentpackages">
+   <title><function>getDependentPackages</function></title>
+   <para>
+    <function>getDependentPackages</function> requires a single argument,
+    a <literal>pear2\Pyrus\IPackageFile</literal> object.
+    This method returns an array of <literal>pear2\Pyrus\Package</literal>
+    objects representing installed packages that depend upon the package
+    passed in.  If the optional second boolean parameter is set to true
+    (which it is by default), performance is improved when querying an
+    <literal>Sqlite3</literal> database by returning packages containing only
+    the name of the package and its dependencies.
+   </para>
+  </section>
+  <section xml:id="pyrus.extending.registry.querying.detectfileconflicts">
+   <title><function>detectFileConflicts</function></title>
+   <para>
+    This method is used to implement file conflict detection to prevent
+    overwriting installed files with those from another package.  It accepts a
+    single argument, a <literal>pear2\Pyrus\IPackageFile</literal> object.
+    The <literal>Pear1</literal> registry is the most efficient at this
+    operation (at the expense of drastically decreased efficiency at installation or
+    uninstallation), the <literal>Sqlite3</literal> is the next most
+    efficient, and the <literal>Xml</literal> registry is the least efficient,
+    and in fact is so inefficient, this method should only be called
+    on an Xml registry that is for a very small installation.
+   </para>
+  </section>
+  <section xml:id="pyrus.extending.registry.querying.detectregistries">
+   <title><function>detectRegistries</function></title>
+   <para>
+    This static method accepts a string containing the path to check for registries,
+    and returns an array containing the names of registries
+    found.  The possible return values include <literal>Sqlite3</literal>,
+    <literal>Xml</literal> and <literal>Pear1</literal>.  Note that only a call
+    to <function>pear2\Pyrus\Registry::detectRegistries</function> will return
+    a list of all registries found.  A call to
+    <function>pear2\Pyrus\Registry\Sqlite3::detectRegistries</function> will
+    only return either <literal>array()</literal> or
+    <literal>array('Sqlite3')</literal> depending on whether the registry exists.
+   </para>
+  </section>
+  <section xml:id="pyrus.extending.registry.querying.removeregistry">
+   <title><function>removeRegistry</function></title>
+   <para>
+    This static method accepts a string containing the path to remove a registry
+    from.  A call to <function>pear2\Pyrus\Registry::removeRegistry</function>
+    will completely remove all traces of a PEAR installation.  A call to
+    an individual registry's removeRegistry, such as a call to
+    <function>pear2\Pyrus\Registry\Pear1::removeRegistry</function> will only
+    remove that registry from the installation path.
+   </para>
+  </section>
  </section>
  <section xml:id="pyrus.extending.registry.channelregistry">
   <info><title>Channel registry</title></info>
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.