From f360932343f9246f90899d14f15d8758fd25e47b Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Fri, 27 Jun 2014 00:21:55 +0200 Subject: [PATCH 1/3] Add unit test for (to be added) Net_SFTP_Stream::register(). --- tests/Unit/Net/SFTPStreamTest.php | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/Unit/Net/SFTPStreamTest.php diff --git a/tests/Unit/Net/SFTPStreamTest.php b/tests/Unit/Net/SFTPStreamTest.php new file mode 100644 index 00000000..f54f79f8 --- /dev/null +++ b/tests/Unit/Net/SFTPStreamTest.php @@ -0,0 +1,33 @@ + + * @copyright MMXIV Andreas Fischer + * @license http://www.opensource.org/licenses/mit-license.html MIT License + */ + +require_once 'Net/SFTP/Stream.php'; + +class Unit_Net_SFTPStreamTest extends PhpseclibTestCase +{ + protected $protocol = 'sftptest'; + + public function setUp() + { + parent::setUp(); + if (in_array($this->protocol, stream_get_wrappers())) { + stream_wrapper_unregister($this->protocol); + } + } + + public function testRegisterFromSideEffect() + { + // Including the file registers 'sftp' as a stream. + $this->assertContains('sftp', stream_get_wrappers()); + } + + public function testRegisterWithArgument() + { + Net_SFTP_Stream::register($this->protocol); + $this->assertContains($this->protocol, stream_get_wrappers()); + } +} From 73f961cb7dd35a56c66a89632d58fcd62fffd1d1 Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Fri, 27 Jun 2014 00:22:41 +0200 Subject: [PATCH 2/3] Add Net_SFTP_Stream::register() for easier autoloading. --- phpseclib/Net/SFTP/Stream.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/phpseclib/Net/SFTP/Stream.php b/phpseclib/Net/SFTP/Stream.php index 2f11abaa..f17b81ed 100644 --- a/phpseclib/Net/SFTP/Stream.php +++ b/phpseclib/Net/SFTP/Stream.php @@ -126,6 +126,21 @@ class Net_SFTP_Stream */ var $notification; + /** + * Registers this class as a URL wrapper. + * + * @param optional String $protocol The wrapper name to be registered. + * @return Boolean True on success, false otherwise. + * @access public + */ + static function register($protocol = 'sftp') + { + if (in_array($protocol, stream_get_wrappers(), true)) { + return false; + } + return stream_wrapper_register($protocol, __CLASS__); + } + /** * The Constructor * @@ -783,6 +798,4 @@ class Net_SFTP_Stream } } -if (function_exists('stream_wrapper_register')) { - stream_wrapper_register('sftp', 'Net_SFTP_Stream'); -} +Net_SFTP_Stream::register(); From 0f672dde528c0fbd718940429bc629bdb5b0911d Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Fri, 27 Jun 2014 00:35:19 +0200 Subject: [PATCH 3/3] Use get_called_class() if available. --- phpseclib/Net/SFTP/Stream.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phpseclib/Net/SFTP/Stream.php b/phpseclib/Net/SFTP/Stream.php index f17b81ed..e9afb3ea 100644 --- a/phpseclib/Net/SFTP/Stream.php +++ b/phpseclib/Net/SFTP/Stream.php @@ -138,7 +138,8 @@ class Net_SFTP_Stream if (in_array($protocol, stream_get_wrappers(), true)) { return false; } - return stream_wrapper_register($protocol, __CLASS__); + $class = function_exists('get_called_class') ? get_called_class() : __CLASS__; + return stream_wrapper_register($protocol, $class); } /**