Browse Source

Merge pull request #1416 from yiisoft/helpers-renames

Helpers refactoring
tags/2.0.0-beta
Qiang Xue 11 years ago
parent
commit
4df9b6cb0e
  1. 2
      extensions/elasticsearch/ActiveRecord.php
  2. 2
      extensions/gii/generators/module/Generator.php
  3. 3
      extensions/redis/ActiveRecord.php
  4. 4
      extensions/sphinx/ActiveRecord.php
  5. 2
      framework/yii/caching/Cache.php
  6. 7
      framework/yii/db/ActiveRecord.php
  7. 6
      framework/yii/helpers/BaseFileHelper.php
  8. 22
      framework/yii/helpers/BaseSecurity.php
  9. 6
      framework/yii/helpers/BaseStringHelper.php
  10. 6
      framework/yii/web/Response.php
  11. 8
      tests/unit/framework/helpers/StringHelperTest.php
  12. 2
      tests/unit/framework/web/ResponseTest.php

2
extensions/elasticsearch/ActiveRecord.php

@ -9,8 +9,6 @@ namespace yii\elasticsearch;
use yii\base\InvalidCallException;
use yii\base\InvalidConfigException;
use yii\base\NotSupportedException;
use yii\db\ActiveRecordInterface;
use yii\db\BaseActiveRecord;
use yii\helpers\Inflector;
use yii\helpers\Json;

2
extensions/gii/generators/module/Generator.php

@ -7,9 +7,9 @@
namespace yii\gii\generators\module;
use Yii;
use yii\gii\CodeFile;
use yii\helpers\Html;
use Yii;
use yii\helpers\StringHelper;
/**

3
extensions/redis/ActiveRecord.php

@ -8,7 +8,6 @@
namespace yii\redis;
use yii\base\InvalidConfigException;
use yii\base\NotSupportedException;
use yii\db\BaseActiveRecord;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
@ -288,7 +287,7 @@ class ActiveRecord extends BaseActiveRecord
if (is_numeric($key)) {
return $key;
} elseif (is_string($key)) {
return ctype_alnum($key) && StringHelper::strlen($key) <= 32 ? $key : md5($key);
return ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
} elseif (is_array($key)) {
if (count($key) == 1) {
return self::buildKey(reset($key));

4
extensions/sphinx/ActiveRecord.php

@ -8,13 +8,13 @@
namespace yii\sphinx;
use yii\base\InvalidConfigException;
use yii\db\BaseActiveRecord;
use yii\base\NotSupportedException;
use yii\db\ActiveRelationInterface;
use yii\db\BaseActiveRecord;
use yii\db\StaleObjectException;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
use Yii;
use yii\helpers\StringHelper;
/**
* ActiveRecord is the base class for classes representing relational data in terms of objects.

2
framework/yii/caching/Cache.php

@ -100,7 +100,7 @@ abstract class Cache extends Component implements \ArrayAccess
protected function buildKey($key)
{
if (is_string($key)) {
$key = ctype_alnum($key) && StringHelper::strlen($key) <= 32 ? $key : md5($key);
$key = ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
} else {
$key = md5(json_encode($key));
}

7
framework/yii/db/ActiveRecord.php

@ -9,13 +9,8 @@
namespace yii\db;
use yii\base\InvalidConfigException;
use yii\base\Model;
use yii\base\InvalidParamException;
use yii\base\ModelEvent;
use yii\base\UnknownMethodException;
use yii\base\InvalidCallException;
use yii\helpers\StringHelper;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
/**
* ActiveRecord is the base class for classes representing relational data in terms of objects.

6
framework/yii/helpers/BaseFileHelper.php

@ -292,11 +292,11 @@ class BaseFileHelper
if ($isDir = is_dir($path)) {
$path .= '/';
}
$n = StringHelper::strlen($path);
$n = StringHelper::byteLength($path);
if (!empty($options['except'])) {
foreach ($options['except'] as $name) {
if (StringHelper::substr($path, -StringHelper::strlen($name), $n) === $name) {
if (StringHelper::byteSubstr($path, -StringHelper::byteLength($name), $n) === $name) {
return false;
}
}
@ -304,7 +304,7 @@ class BaseFileHelper
if (!$isDir && !empty($options['only'])) {
foreach ($options['only'] as $name) {
if (StringHelper::substr($path, -StringHelper::strlen($name), $n) === $name) {
if (StringHelper::byteSubstr($path, -StringHelper::byteLength($name), $n) === $name) {
return true;
}
}

22
framework/yii/helpers/BaseSecurity.php

@ -80,10 +80,10 @@ class BaseSecurity
}
$module = static::openCryptModule();
$ivSize = mcrypt_enc_get_iv_size($module);
$iv = StringHelper::substr($data, 0, $ivSize);
$iv = StringHelper::byteSubstr($data, 0, $ivSize);
$key = static::deriveKey($password, $iv);
mcrypt_generic_init($module, $key, $iv);
$decrypted = mdecrypt_generic($module, StringHelper::substr($data, $ivSize, StringHelper::strlen($data)));
$decrypted = mdecrypt_generic($module, StringHelper::byteSubstr($data, $ivSize, StringHelper::byteLength($data)));
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return static::stripPadding($decrypted);
@ -96,7 +96,7 @@ class BaseSecurity
*/
protected static function addPadding($data)
{
$pad = self::CRYPT_BLOCK_SIZE - (StringHelper::strlen($data) % self::CRYPT_BLOCK_SIZE);
$pad = self::CRYPT_BLOCK_SIZE - (StringHelper::byteLength($data) % self::CRYPT_BLOCK_SIZE);
return $data . str_repeat(chr($pad), $pad);
}
@ -107,11 +107,11 @@ class BaseSecurity
*/
protected static function stripPadding($data)
{
$end = StringHelper::substr($data, -1, NULL);
$end = StringHelper::byteSubstr($data, -1, NULL);
$last = ord($end);
$n = StringHelper::strlen($data) - $last;
if (StringHelper::substr($data, $n, NULL) == str_repeat($end, $last)) {
return StringHelper::substr($data, 0, $n);
$n = StringHelper::byteLength($data) - $last;
if (StringHelper::byteSubstr($data, $n, NULL) == str_repeat($end, $last)) {
return StringHelper::byteSubstr($data, 0, $n);
}
return false;
}
@ -164,11 +164,11 @@ class BaseSecurity
*/
public static function validateData($data, $key, $algorithm = 'sha256')
{
$hashSize = StringHelper::strlen(hash_hmac($algorithm, 'test', $key));
$n = StringHelper::strlen($data);
$hashSize = StringHelper::byteLength(hash_hmac($algorithm, 'test', $key));
$n = StringHelper::byteLength($data);
if ($n >= $hashSize) {
$hash = StringHelper::substr($data, 0, $hashSize);
$data2 = StringHelper::substr($data, $hashSize, $n - $hashSize);
$hash = StringHelper::byteSubstr($data, 0, $hashSize);
$data2 = StringHelper::byteSubstr($data, $hashSize, $n - $hashSize);
return $hash === hash_hmac($algorithm, $data2, $key) ? $data2 : false;
} else {
return false;

6
framework/yii/helpers/BaseStringHelper.php

@ -26,7 +26,7 @@ class BaseStringHelper
* @param string $string the string being measured for length
* @return integer the number of bytes in the given string.
*/
public static function strlen($string)
public static function byteLength($string)
{
return mb_strlen($string, '8bit');
}
@ -40,7 +40,7 @@ class BaseStringHelper
* @return string the extracted part of string, or FALSE on failure or an empty string.
* @see http://www.php.net/manual/en/function.substr.php
*/
public static function substr($string, $start, $length)
public static function byteSubstr($string, $start, $length)
{
return mb_substr($string, $start, $length, '8bit');
}
@ -52,6 +52,7 @@ class BaseStringHelper
* This method was mainly created to work on php namespaces. When working with real
* file paths, php's `basename()` should work fine for you.
* Note: this method is not aware of the actual filesystem, or path components such as "..".
*
* @param string $path A path string.
* @param string $suffix If the name component ends in suffix this will also be cut off.
* @return string the trailing name component of the given path.
@ -73,6 +74,7 @@ class BaseStringHelper
* Returns parent directory's path.
* This method is similar to `dirname()` except that it will treat
* both \ and / as directory separators, independent of the operating system.
*
* @param string $path A path string.
* @return string the parent directory's path.
* @see http://www.php.net/manual/en/function.basename.php

6
framework/yii/web/Response.php

@ -382,7 +382,7 @@ class Response extends \yii\base\Response
public function sendContentAsFile($content, $attachmentName, $mimeType = 'application/octet-stream')
{
$headers = $this->getHeaders();
$contentLength = StringHelper::strlen($content);
$contentLength = StringHelper::byteLength($content);
$range = $this->getHttpRange($contentLength);
if ($range === false) {
$headers->set('Content-Range', "bytes */$contentLength");
@ -395,14 +395,14 @@ class Response extends \yii\base\Response
->setDefault('Content-Type', $mimeType)
->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->setDefault('Content-Transfer-Encoding', 'binary')
->setDefault('Content-Length', StringHelper::strlen($content))
->setDefault('Content-Length', StringHelper::byteLength($content))
->setDefault('Content-Disposition', "attachment; filename=\"$attachmentName\"");
list($begin, $end) = $range;
if ($begin !=0 || $end != $contentLength - 1) {
$this->setStatusCode(206);
$headers->set('Content-Range', "bytes $begin-$end/$contentLength");
$this->content = StringHelper::substr($content, $begin, $end - $begin + 1);
$this->content = StringHelper::byteSubstr($content, $begin, $end - $begin + 1);
} else {
$this->setStatusCode(200);
$this->content = $content;

8
tests/unit/framework/helpers/StringHelperTest.php

@ -12,14 +12,14 @@ class StringHelperTest extends TestCase
{
public function testStrlen()
{
$this->assertEquals(4, StringHelper::strlen('this'));
$this->assertEquals(6, StringHelper::strlen('это'));
$this->assertEquals(4, StringHelper::byteLength('this'));
$this->assertEquals(6, StringHelper::byteLength('это'));
}
public function testSubstr()
{
$this->assertEquals('th', StringHelper::substr('this', 0, 2));
$this->assertEquals('э', StringHelper::substr('это', 0, 2));
$this->assertEquals('th', StringHelper::byteSubstr('this', 0, 2));
$this->assertEquals('э', StringHelper::byteSubstr('это', 0, 2));
}
public function testBasename()

2
tests/unit/framework/web/ResponseTest.php

@ -57,7 +57,7 @@ class ResponseTest extends \yiiunit\TestCase
$this->assertEquals(206, $this->response->statusCode);
$headers = $this->response->headers;
$this->assertEquals("bytes", $headers->get('Accept-Ranges'));
$this->assertEquals("bytes " . $expectedHeader . '/' . StringHelper::strlen($fullContent), $headers->get('Content-Range'));
$this->assertEquals("bytes " . $expectedHeader . '/' . StringHelper::byteLength($fullContent), $headers->get('Content-Range'));
$this->assertEquals('text/plain', $headers->get('Content-Type'));
$this->assertEquals("$length", $headers->get('Content-Length'));
}

Loading…
Cancel
Save