讓FLEAPHP支援簡易的命名空間

2021-08-31 01:54:37 字數 3523 閱讀 5005

在flea/filter/ 目錄下增加乙個檔案,叫做namespaceuri.php,裡面內容如下:

<?php

/** * 增加命名空間支援 -- 將命名空間掛接到控制器名稱之前

*/function ___namespace_urlrewrite_filter()

$firsttime = false;

foreach ($_ as $k=>$v)

$pathinfo = !empty($_server['path_info']) ?

$_server['path_info'] :

(!empty($_server['orig_path_info']) ? $_server['orig_path_info'] : '');

$parts = explode('/', substr($pathinfo, 1));

// 初始化變數

$namespace = $defaultnamespace ;

$controllername = $actionname = null ;

// 如果是重寫的url,pathinfo 則有值,標準uri的話,pathinfo取不到值

if (isset($parts[0]) && strlen($parts[0]))

}if ($namespace == $defaultnamespace)else

if ($style == '/')

}} else }}

}// 設定最後的命名空間/控制器/action的值

if (isset($_get[$namespaceaccessor]) && strlen($_get[$namespaceaccessor]))

$_get[$namespaceaccessor] = $namespace ;

if (isset($_get[$controlleraccessor]) && strlen($_get[$controlleraccessor]))

$prefix = strlen($namespaces[$namespace]) ? "_" : '' ;

$_get[$controlleraccessor] = $prefix . ucwords($controllername) ;

if (isset($_get[$actionaccessor]) && strlen($_get[$actionaccessor]))

// 將 $_get 合併到 $_request,

// 有時需要使用 $_request 統一處理 url 中的 id=? 這樣的引數

$_request = array_merge($_request, $_get);

}/**

* 增加命名空間支援 -- 將命名空間掛接到控制器名稱之前

*/function ___namespace_urlstandard_filter()

$firsttime = false;

foreach ($_ as $k=>$v)

// 初始化變數

$namespace = $defaultnamespace ;

$controllername = $actionname = null ;

// 設定最後的命名空間/控制器/action的值

if (isset($_get[$namespaceaccessor]) && strlen($_get[$namespaceaccessor]))

$_get[$namespaceaccessor] = $namespace ;

if (isset($_get[$controlleraccessor]) && strlen($_get[$controlleraccessor]))

$prefix = strlen($namespaces[$namespace]) ? "_" : '' ;

$_get[$controlleraccessor] = $prefix . ucwords($controllername) ;

if (isset($_get[$actionaccessor]) && strlen($_get[$actionaccessor]))

// 將 $_get 合併到 $_request,

// 有時需要使用 $_request 統一處理 url 中的 id=? 這樣的引數

$_request = array_merge($_request, $_get);

}/**

* 增加命名空間支援 -- 將控制器名稱轉化成 命名空間/控制器名稱

* * @return string

*/function ___namespacetouri($controllername=null,$isurlrewrite=true)

*/i",$controllername))*/i",'',$controllername);

break ;

}} }

if ($isurlrewrite)else

} ___namespace_urlrewrite_filter() ;

}else

修改 flea.php 檔案中的幾行:

找到: 並注釋掉

// 根據 url 模式設定,決定是否要載入 url 分析過濾器

// require(flea_dir . '/filter/uri.php');

// }

增加一行: require(flea_dir . '/filter/namespaceuri.php');

修改url方法裡面的**:

找到 : // pathinfo 和 rewrite 模式 注釋處,在下面繼續找到 $url .= '/' . rawurlencode($controllername);

將其注釋掉,加上一行 $url .= ___namespacetouri($controllername,true);

找到 : // 標準模式 注釋處,在下面繼續找到:

if ($controllername != $defaultcontroller && !is_null($controllername)) {

// $url .= $parajoin . rawurlencode($controllername); @注釋掉這裡的**

// 修改為:

$url .= $parajoin . ___namespacetouri($controllername,false);

此時全部修改完成,在 專案的配置檔案中加入:

'namespaces' => array(

'blog' => 'blog' ,

'default' => '' ,

) ,

從瀏覽器訪問: /blog/news/list/page/3/cat/internet

則會 自動定位到 url('blog_news','list',array('page'=>3,'cat'=>'internet'))

置頂 讓FLEAPHP支援簡易的命名空間

在flea filter 目錄下增加乙個檔案,叫做namespaceuri.php,裡面內容如下 增加命名空間支援 將命名空間掛接到控制器名稱之前 function namespace urlrewrite filter firsttime false foreach as k v pathinfo...

讓人迷惑的命名

讓人迷惑的命名 jdk1.5中的string的兩個方法replace和replaceall。從名字你絕對猜不到replaceall的真正用途。string replace char oldchar,char newchar 返回乙個新的字串,它是通過用newchar替換此字串中出現的所有oldcha...

讓docbook支援顏色的渲染

docbook預設是不能夠對字型進行顏色設定的。但是通過擴充套件可以達到對html和pdf輸出的顏色設定。一 首先,我們來談論一下如何對html的輸出進行顏色設定。對html的輸出情況下要簡單一些,只需要通過css樣式控制即可,而且這個docbook是內嵌支援的。在docbook的xml檔案中,我們...