Php 如何检测类或方法名称是否有多个单词?
以前也有人问过类似的问题,但这次不同了 我正在使用Zend Framework 1.12,我需要检查一个类或方法名包含多少单词Php 如何检测类或方法名称是否有多个单词?,php,zend-framework,Php,Zend Framework,以前也有人问过类似的问题,但这次不同了 我正在使用Zend Framework 1.12,我需要检查一个类或方法名包含多少单词 I.e. "helloWorld" contains 2 words and "hello" contains 1 word. 现在这就是我正在做的 $inflector = new Zend_Filter_Inflector(':class'); $inflector->setRules(array( ':class' => array('Wo
I.e. "helloWorld" contains 2 words and "hello" contains 1 word.
现在这就是我正在做的
$inflector = new Zend_Filter_Inflector(':class');
$inflector->setRules(array(
':class' => array('Word_CamelCaseToUnderscore')
));
//This will return Hello_World
$className = ucfirst($inflector->filter(array('class' => $className)));
$names = explode("_", $className);
if(count($names) > 1){
echo 'multiple words';
} else {
echo 'single word';
}
有更好的方法吗
提前感谢您的帮助。我编写了如下代码:
function getMethodByField( $field )
{
$result = '';
if( !empty($field) ) {
$method = '';
$strMethodArr = explode('_', $field);
foreach( $strMethodArr as $str ) {
$method .= ucfirst( $str );
}
$result = $method;
}
return $result;
}
我喜欢你的解决方案。为了好玩,我可以建议创建您自己的过滤器。
在我的库
Doydoytools
中,我创建了这个过滤器Doydoytools/filter/Word/CounterWords.php
:
class Doydoytools_Filter_Word_CounterWords extends Zend_Filter_Word_CamelCaseToUnderscore
{
public function filter($value)
{
return count(explode($this->_separator, parent::filter($value)));
}
}
因此对于类应用程序插件会话
$inflector = new Zend_Filter_Inflector(':class');
$inflector->setRules(array(':class' => array(new Doydoytools_Filter_Word_CounterWords())));
$count = $inflector->filter(array('class' => __CLASS__));
使用您的方法,结果是
4
,名称是Application\u Plugin\u p\u Session
这不是我在问题中所问的。要计算字数,可以使用php函数。但对于这将是大写字符搜索模式。我知道这一点。我目前的解决方案比那更好。我想进一步改进这一点。
$inflector = new Zend_Filter_Inflector(':class');
$inflector->setRules(array(':class' => array(new Doydoytools_Filter_Word_CounterWords())));
$count = $inflector->filter(array('class' => __CLASS__));