Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
641e6ee7
Commit
641e6ee7
authored
May 22, 2013
by
Antonio Ramirez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ported inflection methods from StringHelper to Inflector helper class
parent
5cc22e95
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
5 additions
and
136 deletions
+5
-136
Model.php
framework/yii/base/Model.php
+2
-2
ActiveRecord.php
framework/yii/db/ActiveRecord.php
+3
-2
StringHelper.php
framework/yii/helpers/base/StringHelper.php
+0
-80
StringHelperTest.php
tests/unit/framework/helpers/StringHelperTest.php
+0
-52
No files found.
framework/yii/base/Model.php
View file @
641e6ee7
...
...
@@ -9,7 +9,7 @@ namespace yii\base;
use
ArrayObject
;
use
ArrayIterator
;
use
yii\helpers\
StringHelpe
r
;
use
yii\helpers\
Inflecto
r
;
use
yii\validators\RequiredValidator
;
use
yii\validators\Validator
;
...
...
@@ -504,7 +504,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
*/
public
function
generateAttributeLabel
(
$name
)
{
return
StringHelpe
r
::
camel2words
(
$name
,
true
);
return
Inflecto
r
::
camel2words
(
$name
,
true
);
}
/**
...
...
framework/yii/db/ActiveRecord.php
View file @
641e6ee7
...
...
@@ -18,6 +18,7 @@ use yii\db\Connection;
use
yii\db\TableSchema
;
use
yii\db\Expression
;
use
yii\helpers\StringHelper
;
use
yii\helpers\Inflector
;
/**
* ActiveRecord is the base class for classes representing relational data in terms of objects.
...
...
@@ -261,14 +262,14 @@ class ActiveRecord extends Model
/**
* Declares the name of the database table associated with this AR class.
* By default this method returns the class name as the table name by calling [[
StringHelpe
r::camel2id()]]
* By default this method returns the class name as the table name by calling [[
Inflecto
r::camel2id()]]
* with prefix 'tbl_'. For example, 'Customer' becomes 'tbl_customer', and 'OrderItem' becomes
* 'tbl_order_item'. You may override this method if the table is not named after this convention.
* @return string the table name
*/
public
static
function
tableName
()
{
return
'tbl_'
.
StringHelpe
r
::
camel2id
(
StringHelper
::
basename
(
get_called_class
()),
'_'
);
return
'tbl_'
.
Inflecto
r
::
camel2id
(
StringHelper
::
basename
(
get_called_class
()),
'_'
);
}
/**
...
...
framework/yii/helpers/base/StringHelper.php
View file @
641e6ee7
...
...
@@ -65,84 +65,4 @@ class StringHelper
}
return
$path
;
}
/**
* Converts a word to its plural form.
* Note that this is for English only!
* For example, 'apple' will become 'apples', and 'child' will become 'children'.
* @param string $name the word to be pluralized
* @return string the pluralized word
*/
public
static
function
pluralize
(
$name
)
{
static
$rules
=
array
(
'/(m)ove$/i'
=>
'\1oves'
,
'/(f)oot$/i'
=>
'\1eet'
,
'/(c)hild$/i'
=>
'\1hildren'
,
'/(h)uman$/i'
=>
'\1umans'
,
'/(m)an$/i'
=>
'\1en'
,
'/(s)taff$/i'
=>
'\1taff'
,
'/(t)ooth$/i'
=>
'\1eeth'
,
'/(p)erson$/i'
=>
'\1eople'
,
'/([m|l])ouse$/i'
=>
'\1ice'
,
'/(x|ch|ss|sh|us|as|is|os)$/i'
=>
'\1es'
,
'/([^aeiouy]|qu)y$/i'
=>
'\1ies'
,
'/(?:([^f])fe|([lr])f)$/i'
=>
'\1\2ves'
,
'/(shea|lea|loa|thie)f$/i'
=>
'\1ves'
,
'/([ti])um$/i'
=>
'\1a'
,
'/(tomat|potat|ech|her|vet)o$/i'
=>
'\1oes'
,
'/(bu)s$/i'
=>
'\1ses'
,
'/(ax|test)is$/i'
=>
'\1es'
,
'/s$/'
=>
's'
,
);
foreach
(
$rules
as
$rule
=>
$replacement
)
{
if
(
preg_match
(
$rule
,
$name
))
{
return
preg_replace
(
$rule
,
$replacement
,
$name
);
}
}
return
$name
.
's'
;
}
/**
* Converts a CamelCase name into space-separated words.
* For example, 'PostTag' will be converted to 'Post Tag'.
* @param string $name the string to be converted
* @param boolean $ucwords whether to capitalize the first letter in each word
* @return string the resulting words
*/
public
static
function
camel2words
(
$name
,
$ucwords
=
true
)
{
$label
=
trim
(
strtolower
(
str_replace
(
array
(
'-'
,
'_'
,
'.'
),
' '
,
preg_replace
(
'/(?<![A-Z])[A-Z]/'
,
' \0'
,
$name
))));
return
$ucwords
?
ucwords
(
$label
)
:
$label
;
}
/**
* Converts a CamelCase name into an ID in lowercase.
* Words in the ID may be concatenated using the specified character (defaults to '-').
* For example, 'PostTag' will be converted to 'post-tag'.
* @param string $name the string to be converted
* @param string $separator the character used to concatenate the words in the ID
* @return string the resulting ID
*/
public
static
function
camel2id
(
$name
,
$separator
=
'-'
)
{
if
(
$separator
===
'_'
)
{
return
trim
(
strtolower
(
preg_replace
(
'/(?<![A-Z])[A-Z]/'
,
'_\0'
,
$name
)),
'_'
);
}
else
{
return
trim
(
strtolower
(
str_replace
(
'_'
,
$separator
,
preg_replace
(
'/(?<![A-Z])[A-Z]/'
,
$separator
.
'\0'
,
$name
))),
$separator
);
}
}
/**
* Converts an ID into a CamelCase name.
* Words in the ID separated by `$separator` (defaults to '-') will be concatenated into a CamelCase name.
* For example, 'post-tag' is converted to 'PostTag'.
* @param string $id the ID to be converted
* @param string $separator the character used to separate the words in the ID
* @return string the resulting CamelCase name
*/
public
static
function
id2camel
(
$id
,
$separator
=
'-'
)
{
return
str_replace
(
' '
,
''
,
ucwords
(
implode
(
' '
,
explode
(
$separator
,
$id
))));
}
}
tests/unit/framework/helpers/StringHelperTest.php
View file @
641e6ee7
...
...
@@ -19,58 +19,6 @@ class StringHelperTest extends \yii\test\TestCase
$this
->
assertEquals
(
'э'
,
StringHelper
::
substr
(
'это'
,
0
,
2
));
}
public
function
testPluralize
()
{
$testData
=
array
(
'move'
=>
'moves'
,
'foot'
=>
'feet'
,
'child'
=>
'children'
,
'human'
=>
'humans'
,
'man'
=>
'men'
,
'staff'
=>
'staff'
,
'tooth'
=>
'teeth'
,
'person'
=>
'people'
,
'mouse'
=>
'mice'
,
'touch'
=>
'touches'
,
'hash'
=>
'hashes'
,
'shelf'
=>
'shelves'
,
'potato'
=>
'potatoes'
,
'bus'
=>
'buses'
,
'test'
=>
'tests'
,
'car'
=>
'cars'
,
);
foreach
(
$testData
as
$testIn
=>
$testOut
)
{
$this
->
assertEquals
(
$testOut
,
StringHelper
::
pluralize
(
$testIn
));
$this
->
assertEquals
(
ucfirst
(
$testOut
),
ucfirst
(
StringHelper
::
pluralize
(
$testIn
)));
}
}
public
function
testCamel2words
()
{
$this
->
assertEquals
(
'Camel Case'
,
StringHelper
::
camel2words
(
'camelCase'
));
$this
->
assertEquals
(
'Lower Case'
,
StringHelper
::
camel2words
(
'lower_case'
));
$this
->
assertEquals
(
'Tricky Stuff It Is Testing'
,
StringHelper
::
camel2words
(
' tricky_stuff.it-is testing... '
));
}
public
function
testCamel2id
()
{
$this
->
assertEquals
(
'post-tag'
,
StringHelper
::
camel2id
(
'PostTag'
));
$this
->
assertEquals
(
'post_tag'
,
StringHelper
::
camel2id
(
'PostTag'
,
'_'
));
$this
->
assertEquals
(
'post-tag'
,
StringHelper
::
camel2id
(
'postTag'
));
$this
->
assertEquals
(
'post_tag'
,
StringHelper
::
camel2id
(
'postTag'
,
'_'
));
}
public
function
testId2camel
()
{
$this
->
assertEquals
(
'PostTag'
,
StringHelper
::
id2camel
(
'post-tag'
));
$this
->
assertEquals
(
'PostTag'
,
StringHelper
::
id2camel
(
'post_tag'
,
'_'
));
$this
->
assertEquals
(
'PostTag'
,
StringHelper
::
id2camel
(
'post-tag'
));
$this
->
assertEquals
(
'PostTag'
,
StringHelper
::
id2camel
(
'post_tag'
,
'_'
));
}
public
function
testBasename
()
{
$this
->
assertEquals
(
''
,
StringHelper
::
basename
(
''
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment