PHP反照小試: 提取控制器的action方法

來源:互聯網
上載者:User
PHP反射小試: 提取控制器的action方法
 $v){// 1. 去掉基準路徑$v = str_replace($basepath,'',$v);// 2. 去掉尾碼$v = preg_replace('/\.php$/i','',$v);// 3. 拆分過濾 $v = Core_AppUtils::normalize($v,DIRECTORY_SEPARATOR);if (empty($v)) continue;$paths[$k] = implode('_',$v);}$d = array();foreach ($paths as $controller){$d[$controller] = self::getActionListFromControllerClass($controller);}return $d;}static function getActionListFromControllerClass($controller_name){static $controllerClassPrefix = null;if (!$controllerClassPrefix) {$controllerClassPrefix = Core_App::ini('mvc/web/dispatcher/controllerClassPrefix','Core_Controller_');}$clazz = "{$controllerClassPrefix}{$controller_name}";Core_Autoloader::loadClass($clazz,true);$obj = new ReflectionClass($clazz);$d = array();$publicMethods = $obj->getMethods(ReflectionMethod::IS_PUBLIC);foreach ($publicMethods as $method){if (preg_match('/^action/i',$method->name)) {$action_name = preg_replace('/^action/i','',$method->name);$rmd = Core_Mvc_Router::resourceEncode($controller_name,$action_name);$q = array_shift($rmd);$d[$q] = self::getAclResourceDescription($method->getDocComment());}}return array('description' => self::getAclResourceDescription($obj->getDocComment()),'actions' => $d);}static function getAclResourceDescription($finder){static $tagfinder_start = [email protected]{';static $tagfinder_end = '}aclres-finder-desc@';if (empty($finder)) return '';$start = stripos($finder,$tagfinder_start);if ($start){$end = stripos($finder,$tagfinder_end);if ($end && $end > $start){// 只有閉合的標籤才行$start = $start+strlen($tagfinder_start);return trim(substr($finder,$start,$end-$start));}}return '';}}
?

1 樓 vb2005xu 2012-05-31

http://www.php10086.com/page/3 不錯的部落格

2 樓 vb2005xu 2012-05-31

http://opauth.org/

3 樓 vb2005xu 2012-06-01

http://www.shejidaren.com/category/css

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.