diff --git a/lib/php/lib/Factory/TStringFuncFactory.php b/lib/php/lib/Factory/TStringFuncFactory.php
index 7739d16..30de4d7 100644
--- a/lib/php/lib/Factory/TStringFuncFactory.php
+++ b/lib/php/lib/Factory/TStringFuncFactory.php
@@ -21,8 +21,9 @@
 
 namespace Thrift\Factory;
 
-use Thrift\StringFunc\Mbstring;
 use Thrift\StringFunc\Core;
+use Thrift\StringFunc\Mbstring;
+use Thrift\StringFunc\TStringFunc;
 
 class TStringFuncFactory
 {
@@ -49,7 +50,7 @@
          * Cannot use str* functions for byte counting because multibyte
          * characters will be read a single bytes.
          *
-         * See: http://us.php.net/manual/en/mbstring.overload.php
+         * See: http://php.net/manual/en/mbstring.overload.php
          */
         if (ini_get('mbstring.func_overload') & 2) {
             self::$_instance = new Mbstring();
diff --git a/lib/php/lib/Transport/TBufferedTransport.php b/lib/php/lib/Transport/TBufferedTransport.php
index a541cbb..253c5ac 100644
--- a/lib/php/lib/Transport/TBufferedTransport.php
+++ b/lib/php/lib/Transport/TBufferedTransport.php
@@ -22,6 +22,7 @@
 
 namespace Thrift\Transport;
 
+use Thrift\Exception\TTransportException;
 use Thrift\Factory\TStringFuncFactory;
 
 /**
@@ -34,21 +35,11 @@
 class TBufferedTransport extends TTransport
 {
     /**
-     * Constructor. Creates a buffered transport around an underlying transport
-     */
-    public function __construct($transport = null, $rBufSize = 512, $wBufSize = 512)
-    {
-        $this->transport_ = $transport;
-        $this->rBufSize_ = $rBufSize;
-        $this->wBufSize_ = $wBufSize;
-    }
-
-    /**
      * The underlying transport
      *
      * @var TTransport
      */
-    protected $transport_ = null;
+    protected $transport_;
 
     /**
      * The receive buffer size
@@ -78,11 +69,26 @@
      */
     protected $rBuf_ = '';
 
+    /**
+     * Constructor. Creates a buffered transport around an underlying transport
+     */
+    public function __construct($transport, $rBufSize = 512, $wBufSize = 512)
+    {
+        $this->transport_ = $transport;
+        $this->rBufSize_ = $rBufSize;
+        $this->wBufSize_ = $wBufSize;
+    }
+
     public function isOpen()
     {
         return $this->transport_->isOpen();
     }
 
+    /**
+     * @inheritdoc
+     *
+     * @throws TTransportException
+     */
     public function open()
     {
         $this->transport_->open();
@@ -110,6 +116,8 @@
      *
      * Therefore, use the readAll method of the wrapped transport inside
      * the buffered readAll.
+     *
+     * @throws TTransportException
      */
     public function readAll($len)
     {
@@ -131,6 +139,13 @@
         return $data;
     }
 
+    /**
+     * @inheritdoc
+     *
+     * @param int $len
+     * @return string
+     * @throws TTransportException
+     */
     public function read($len)
     {
         if (TStringFuncFactory::create()->strlen($this->rBuf_) === 0) {
@@ -150,6 +165,12 @@
         return $ret;
     }
 
+    /**
+     * @inheritdoc
+     *
+     * @param string $buf
+     * @throws TTransportException
+     */
     public function write($buf)
     {
         $this->wBuf_ .= $buf;
@@ -164,6 +185,11 @@
         }
     }
 
+    /**
+     * @inheritdoc
+     *
+     * @throws TTransportException
+     */
     public function flush()
     {
         if (TStringFuncFactory::create()->strlen($this->wBuf_) > 0) {
diff --git a/lib/php/lib/Transport/TTransport.php b/lib/php/lib/Transport/TTransport.php
index df248f2..35921c6 100644
--- a/lib/php/lib/Transport/TTransport.php
+++ b/lib/php/lib/Transport/TTransport.php
@@ -22,6 +22,7 @@
 
 namespace Thrift\Transport;
 
+use Thrift\Exception\TTransportException;
 use Thrift\Factory\TStringFuncFactory;
 
 /**
