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

2021-07-22 17:48:57 字數 3523 閱讀 8160

在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'))

視窗置頂 取消置頂工具

include pragma comment linker,subsystem windows int winapi winmain hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int icmdshow setwindowp...

FleaPHP的安全設定方法

前提條件 虛擬機器,無法將fleaphp資料夾放在http無法訪問的路徑,無法修改qmvmfgapache和php的配置檔案。fleaphp使用預設配置 方法 1。controller資料夾 放在根目錄外 此種辦法只能適合自己有伺服器 2。在controller的檔案裡,盡量不要顯式輸出如echo程...

php置頂文章,zblogphp呼叫置頂文章的教程

中的 10 則標識呼叫的文章數量。這個問題就完美的解決了,但是客戶又問,我能不能指定我想展示的文章呢?然後新一輪的折騰又開始了,起初先看見了天興的部落格,有這個教程,但是這個指定一篇文章,這段 就是zblogphp呼叫指定文章的 如下 post getpost 1 這裡的1是指定的文章id 但是只能...