]> git.m6w6.name Git - mdref/mdref-pq/commitdiff
fiy pq\Types overview; fix some links
authorMichael Wallner <mike@php.net>
Wed, 1 Oct 2014 14:36:13 +0000 (16:36 +0200)
committerMichael Wallner <mike@php.net>
Wed, 1 Oct 2014 14:36:13 +0000 (16:36 +0200)
pq.md
pq/Connection/: Executing Queries.md
pq/Result/: Fetching Results.md
pq/Statement.md
pq/Types.md
pq/Types/: Overview.md

diff --git a/pq.md b/pq.md
index 9e920d46e253c850ade5c64c0352ba2f1dcf7bc0..50221d1cdb9b397d59930e07a198c22a2aa926a2 100644 (file)
--- a/pq.md
+++ b/pq.md
@@ -13,7 +13,7 @@ This is a modern binding to the mature [libpq](http://www.postgresql.org/docs/cu
 
 ## Installation:
 
-This extension is hosted at PECL and can be installed with PEAR’s pecl command:
+This extension is hosted at [PECL](http://pecl.php.net) and can be installed with [PEAR](http://pear.php.net)'s pecl command:
 
        # pecl install pq
 
index f1983a9a3683a01c1f5d1f3b9d32ae2173da0c06..81a16e90df9dcf646295c2692df7a401d78a49ea 100644 (file)
@@ -30,7 +30,7 @@ pq\Connection::execParams() accepts a ***query string*** with a single SQL query
 
 The second argument is an ***array of parameters*** to execute the prepared statement with.
 
-If the third argument is present, an ***array with pg_type OIDs***, those types will be used for the parameters. See [Using types](pq/: Using Types) for details.
+If the third argument is present, an ***array with pg_type OIDs***, those types will be used for the parameters. See [Using types](pq/Types/: Overview) for details.
 
        <?php
        $result = $c->execParams("SELECT int($1) * s, int($2) * s, int($3) * s FROM generate_series(1,3) s", array(1,2,3));
@@ -41,11 +41,11 @@ An object of class pq\Result is returned on success. See [Fetching results](pq/R
 
 ## Explicit prepare & execute of a named statement
 
-pq\Connection::prepare() requires the ***statement name*** as string as first argument. This name is used later to refer to this prepared statement. See [Prepared statements](pq/: Prepared Statements) for details.
+pq\Connection::prepare() requires the ***statement name*** as string as first argument. This name is used later to refer to this prepared statement. See [Prepared statements](pq/Statement) for details.
 
 The second argument is a ***query string*** containing a single SQL query, which will be prepared on the server.
 
-If the third argument is present, an ***array with pg_type OIDs***, those types will be used for the parameters. See [Using types](pq/: Using Types) for details.
+If the third argument is present, an ***array with pg_type OIDs***, those types will be used for the parameters. See [Using types](pq/Types/: Overview) for details.
 
        <?php
        
@@ -54,4 +54,4 @@ If the third argument is present, an ***array with pg_type OIDs***, those types
        
        ?>
 
-An object of class pq\Statement will be returned on success. See [Prepared statements](pq/: Prepared Statements) for details.
+An object of class pq\Statement will be returned on success. See [Prepared statements](pq/Statement) for details.
index b8dd77eb3e806087891d7ae3b4778b4147a23b0a..15941e4453788da275f3e85c4a3243d1c289ab8f 100644 (file)
@@ -1,6 +1,6 @@
 # pq\Result: Overview
 
-An synchronous pq\Connection::exec*() call, or calls to pq\Connection::getResult() after using [asynchronous queries](pq/Connection/: Asynchronous Usage) returns an instance of pq\Result on success. See [Query execution](pq/Connection/: Executing Queries), optionally with [types](pq/Types/: Overview) and [Prepared Statements](pq/Statement/: Overview) for details about how to execute queries.
+An synchronous pq\Connection::exec*() call, or calls to pq\Connection::getResult() after using [asynchronous queries](pq/Connection/: Asynchronous Usage) returns an instance of pq\Result on success. See [Query execution](pq/Connection/: Executing Queries), optionally with [types](pq/Types/: Overview) and [Prepared Statements](pq/Statement) for details about how to execute queries.
 
 ## Fetch types:
 
index 764003fd26df6870f4c573e34e0ce0cc6df68caa..65b10a6ed7e381ead1aea89caf3c3ca19b59f677 100644 (file)
@@ -1,6 +1,7 @@
 # class pq\Statement
 
 A named prepared statement.
+See pq\Connection::prepare().
 
 ## Properties:
 
index 1658a40959357d03bb27a3ca565f102b109cc332..bb4fc4a9dcbca5b32f526cc73fb05bdb11a499f9 100644 (file)
@@ -1,9 +1,7 @@
 # class pq\Types implements ArrayAccess
 
 Accessor to the PostgreSQL `pg_type` relation.
-
-> ***NOTE:***  
-  The following OID constants are obtained from stock PostgreSQL 9.3.5. Types from f.e. extensions can be accessed through the ArrayAccess interface of pq\Types.
+See [here for an overview](pq/Types/: Overview).
 
 ## Example:
 
@@ -51,6 +49,8 @@ Yields:
        typdefault           = 
        typacl               = 
 
+> ***NOTE:***  
+  The following OID constants are obtained from stock PostgreSQL 9.3.5. Types from f.e. extensions can be accessed through the ArrayAccess interface of pq\Types.
 
 ## Constants:
 
index 5f190a7d7646227940b77f9b03e9c97a40b9b39b..023704d6b9f8266bc54c923d007d7b022472f59d 100644 (file)
-# pq\Types AKA pg_type #
+# pq\Types AKA pg_type
 
-The ```pq\Types``` class provides an easy interface to access information stored in PostgreSQL's pg_type relation, f.e. type OIDs and names.
+The pq\Types class provides an easy interface to access information stored in PostgreSQL's pg_type relation, f.e. type OIDs and names.
 
 
-The first argument to the ```pq\Types``` constructor must be an ***instance*** of ```pq\Connection```.
-An ***optional array of namespace names*** is expected as second argument, where 'public' and 'pg_catalog' are queried by default if no namespaces are specified.
+The first argument to the pq\Types constructor must be an instance of pq\Connection.
+An optional array of namespace names is expected as second argument, where 'public' and 'pg_catalog' are queried by default if no namespaces are specified.
 
-```
-#!php
-<?php
-$types = new pq\Types(new pq\Connection);
-```
+       <?php
+       
+       $types = new pq\Types(new pq\Connection);
+       
+       ?>
 
 The types are standard objects indexed by OID and by name and accessible by array key/index:
-```
-#!php
-<?php
-$text = $types["text"];
-$text = $types[25];
 
-printf("TEXT type (oid=%d, name=%s)\n", $text->oid, $text->typname);
-```
+       <?php
+       
+       $text = $types["text"];
+       $text = $types[25];
+       
+       printf("TEXT type (oid=%d, name=%s)\n", $text->oid, $text->typname);
+       
+       ?>
 
-> ***NOTE:***
-> The pg_type relation fields have a ``typ`` prefix.
+> ***NOTE:***  
+  The pg_type relation fields have a ``typ`` prefix.
 
-## Usage when [executing queries](QueryExecution) ##
+## Usage when [executing queries](pq/Connection/: Executing Queries)
 
-```
-#!php
-<?php
-$connection = new pq\Connection;
-$types = new pq\Types($connection);
-$result = $connection->execParams("SELECT \$1 + \$2", array(10, 20), 
-  array($types["int4"]->oid, $types["int4"]->oid));
-```
+
+       <?php
+       
+       $connection = new pq\Connection;
+       $types = new pq\Types($connection);
+       $result = $connection->execParams(
+               "SELECT \$1 + \$2", 
+               array(10, 20), 
+               array($types["int4"]->oid, $types["int4"]->oid));
+       
+       ?>
 
 You can pass a type OID for each parameter of a pepared statement.  The PostgreSQL server will try to infer a type by context for any parameters for which no type OID was specified.
 
-## Static types ##
+## Static types
 
-When ext-pq has been built with PostgreSQL server headers (*) present, then ```pq\Types``` has class constants for the standard types' oids already defined.
+pq\Types has class constants for the standard types' OIDs already defined.
 
-```
-#!php
-<?php
-$connection = new pq\Connection;
-$result = $connection->execParams("SELECT \$1 + \$2", array(10, 20), 
-  array(pq\Types::INT4, pq\Types::INT4));
-```
+       <?php
+       $connection = new pq\Connection;
+       $result = $connection->execParams("SELECT \$1 + \$2", 
+               array(10, 20), 
+               array(pq\Types::INT4, pq\Types::INT4));
 
-> ***NOTE:***
-> You can test for static type support with ```pq\Types::DEFINED === true```
 
-(*) ```include/postgresql/server/catalog/pg_type.h```
+### pq\Datetime
 
-### pq\Datetime ###
-With static type support, date(time) values will automatically be converted to ```pq\Datetime``` objects.
+Date/time values will automatically be converted to pq\Datetime objects.
 
-```
-#!php
-<?php
+       <?php
 
-$conn = new pq\Connection();
-$data = $conn->exec("
-    SELECT 
-         NOW()::date
-        ,NOW()::abstime
-        ,NOW()::timestamp
-        ,NOW()::timestamptz
-")->fetchRow(pq\Result::FETCH_ARRAY);
+       $conn = new pq\Connection();
+       $data = $conn->exec("
+               SELECT 
+                        NOW()::date
+                       ,NOW()::abstime
+                       ,NOW()::timestamp
+                       ,NOW()::timestamptz
+       ")->fetchRow(pq\Result::FETCH_ARRAY);
 
-foreach ($data as $datetime) {
-    printf("%-40s (%s)\n", $datetime, $datetime->format);
-}
-```
+       foreach ($data as $datetime) {
+               printf("%-40s (%s)\n", $datetime, $datetime->format);
+       }
+       
+       ?>
 
 Outputs:
-```
-2013-09-20                               (Y-m-d)
-2013-09-20 14:34:38                      (Y-m-d H:i:s)
-2013-09-20 14:34:38.494886               (Y-m-d H:i:s.u)
-2013-09-20 14:34:38.494886+0200          (Y-m-d H:i:s.uO)
-```
 
-## Custom converters ##
+       2013-09-20                               (Y-m-d)
+       2013-09-20 14:34:38                      (Y-m-d H:i:s)
+       2013-09-20 14:34:38.494886               (Y-m-d H:i:s.u)
+       2013-09-20 14:34:38.494886+0200          (Y-m-d H:i:s.uO)
 
-ext-pq provides an interface called ```pq\Converter``` which one can implement to perform custom type conversions in a transparent manner. Consider the following naive example converting ```HSTORE``` columns on the fly:
+## Custom converters
 
-```
-#!php
-<?php
+ext-pq provides the interface pq\Converter which one can implement to perform custom type conversions in a transparent manner. Consider the following naive example converting `HSTORE` columns on the fly:
 
-class Hstore implements pq\Converter
-{
-       private $oid;
-       
-       function __construct(pq\Types $types) {
-               $this->oid = $types["hstore"]->oid;
-       }
-       
-       function convertTypes() {
-               return [$this->oid];
-       }
-       
-       function convertFromString($string) {
-               return eval("return [$string];");
-       }
-       
-       function convertToString($data) {
-               $string = "";
-               foreach ($data as $k => $v) {
-                       $string .= "\"".addslashes($k)."\"=>";
-                       if (isset($v)) {
-                               $string .= "\"".addslashes($v)."\",";
-                       } else {
-                               $string .= "NULL,";
+       <?php
+
+       class Hstore implements pq\Converter
+       {
+               private $oid;
+               
+               function __construct(pq\Types $types) {
+                       $this->oid = $types["hstore"]->oid;
+               }
+               
+               function convertTypes() {
+                       return [$this->oid];
+               }
+               
+               function convertFromString($string, $type) {
+                       return eval("return [$string];");
+               }
+               
+               function convertToString($data, $type) {
+                       $string = "";
+                       foreach ($data as $k => $v) {
+                               $string .= "\"".addslashes($k)."\"=>";
+                               if (isset($v)) {
+                                       $string .= "\"".addslashes($v)."\",";
+                               } else {
+                                       $string .= "NULL,";
+                               }
                        }
+                       return $string;
                }
-               return $string;
        }
-}
 
-$conn = new pq\Connection();
-$type = new pq\Types($conn);
-$conv = new Hstore($type);
-$conn->setConverter($conv);
-$conn->exec("SELECT '\"foo\"=>\"bar\"'::hstore hs")->fetchCol(0, $data);
+       $conn = new pq\Connection();
+       $type = new pq\Types($conn);
+       $conv = new Hstore($type);
+       $conn->setConverter($conv);
+       $conn->exec("SELECT '\"foo\"=>\"bar\"'::hstore hs")->fetchCol(0, $data);
 
-print_r($data);
+       print_r($data);
 
-```
+       ?>
 
 Output would be the following:
-```
-Array
-(
-    [foo] => bar
-)
-```
+
+       Array
+       (
+               [foo] => bar
+       )