php – 获取YII中的所有“页面”?

前端之家收集整理的这篇文章主要介绍了php – 获取YII中的所有“页面”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建自己的xml站点地图.一切都已完成,除了我认为最容易的部分.你如何获得网站上所有页面的列表?我在/ site文件夹和其他一些文件夹中有很多视图.有没有办法明确请求他们的URL或可能通过控制器?

我不想使用扩展名

您可以使用反射来遍历所有控制器的所有方法
Yii::import('application.controllers.*');
$urls = array();

$directory = Yii::getPathOfAlias('application.controllers');
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileinfo)
{
    if ($fileinfo->isFile() and $fileinfo->getExtension() == 'PHP')
    {
        $className = substr($fileinfo->getFilename(),-4); //strip extension
        $class = new ReflectionClass($className);

        foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method)
        {
            $methodName = $method->getName();
            //only take methods that begin with 'action',but skip actions() method
            if (strpos($methodName,'action') === 0 and $methodName != 'actions')
            {   
                $controller = lcfirst(substr($className,strrpos($className,'Controller')));
                $action = lcfirst(substr($methodName,6));
                $urls[] = Yii::app()->createAbsoluteUrl("$controller/$action");
            }
        }
    }
}

猜你在找的PHP相关文章