PradoNameを一括取得する

メニューや権限をブラウザ上から設定し、データベースに登録しておこうと思うと、PradoNameをとっておきたい。Application や Response にあっても良さそうだけど見つけられず。以下を作成
	/**
	 * ディレクトリにおけるファイル名(FullPath)を再起的に取得する関数。
	 * @param string $dir	ディレクトリのFullPath を入力。最後の セパレーター "/" は不要。
	 * @return multitype:|Ambigous <multitype:, unknown>	取得したファイル名を配列で返す。
	 */
	public function get_files($dir){
		$ret = array();
		if(!is_dir($dir)){
			return $ret;
		}
		$files = glob($dir . DIRECTORY_SEPARATOR . '*');
		foreach($files as $file){
			if(is_dir($file)){
				//ディレクトリの場合には、再帰的に実行した結果を追加。
				$ret = array_merge($ret,JkSystem::get_files($file));
			}elseif(is_file($file)){
				$ret[] = $file;
			}
		}
 		return $ret;
	}

	/*
	 * 再帰的にディレクトリを取得して返すメソッド
	 */
	public function get_dirs($dir){
		$ret = array();
		if(!is_dir($dir)){
			return $ret;
		}
		$files = glob($dir . DIRECTORY_SEPARATOR . '*');
		foreach($files as $file){
			if(is_dir($file)){
				$ret[]=$file;
				$ret = array_merge($ret,JkSystem::get_dirs($file));
			}
		}
 		return $ret;
	}

	/*
	 * 引数に設定されているディレクトリ以下のファイルを取得し、PRADO NAME として返す。
	 * Searvice の BasePath ( pages 等)以下を PRADO NAME として返すため、$dir には
	 * Servece->BasePath 以下のいずれかのディレクトリが入る。
	 */
	public function get_prado_name_by_files($dir){
		$ret=array();
		$files=self::get_files($dir);
		foreach($files as $f){
			$fe=self::get_prado_name_by_file_path($f);	//PRADO NAME に変換。
	         //既にPRADO NAME にある場合には PRADO NAME に入れない。
                //(tpl php が重なる場合など)
			if($fe && array_search($fe,$ret)==FALSE){
				$ret[]=$fe;
			}
		}
		return $ret;
	}

	/*
	 * 引数に設定されているディレクトリ以下のディレクトリを取得し、PRADO NAMEをして返す。
	 * Searvice の BasePath ( pages 等)以下を PRADO NAME として返すため、$dir には
	 * Servece->BasePath 以下のいずれかのディレクトリが入る。
	 */
	public function get_prado_name_by_dirs($dir){
		$ret=array();
		$dir=self::get_dirs($dir);
		foreach($dir as $d){
			$de=self::get_prado_name_by_file_path($d);
			if(array_search($de,$ret)==FALSE){
				$ret[]=$de;
			}
		}
		return $ret;
	}

	/*
	 * file name から PRADO NAME を取得する。
	 */
	public function get_prado_name_by_file_path($file_name){
		//tpl page php 以外なら false を返す(終了)
		$finfo=pathinfo($file_name);
		if($finfo['extension'] && $finfo['extension'] != "tpl" &&
                  $finfo['extension'] != "page" && $finfo['extension'] != "php"){
			return false;
		}
		//BasePath 部分を取り去る
		$bp=Prado::getApplication()->Service->BasePath
		if(strpos($file_name,$bp)>=0){
			$file_name=substr($file_name,strpos($file_name,$bp)+strlen($bp));
		}

		// ディレクトリ区切り文字で切って配列へ入れる。
		$fa=preg_split("/[\\".DIRECTORY_SEPARATOR."]+/", $file_name);

		$fr="";
		// 区切り文字を .(ドットに変更して結合)
		foreach($fa as $fp){
			if(strlen($fr)>0){
				$fr.=".";
			}
			$fr.=$fp;
		}

		//php page tpl については、取り去る
		$fr=basename($fr,".php");
		$fr=basename($fr,".page");
		$fr=basename($fr,".tpl");
		return $fr;
	}
これで以下の様に、PRADO NAMEを取得
JkSystem::get_prado_name_by_files($this->Service->BasePath);
JkSystem::get_prado_name_by_dirs($this->Service->BasePath);
\( this->Application->BasePath と  \)this->Service->BasePath が 違うということを発見した。