Php 如何检测类或方法名称是否有多个单词?

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

以前也有人问过类似的问题,但这次不同了

我正在使用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('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__));