星期一, 8月 25, 2008

權限物件備忘

Modified Preorder Travasal Tree本體完成,單元測試完成,現在要加上權限物件的wrapper。介面不會區分「權限,使用者」,純粹表達成許多樹的許多節點間的關係。雖然會暴露底層是tree structure,但好處是介面的簡單化。可以的話一個class希望弄到只有三個主要public method(搭配幾個跟特殊usage有關,一次抓一堆node的method)。目前草擬介面如下。tree structure為模仿phpgacl的ARO group的概念。但可以擴展到包含ACO,AXO。

use case:
1.能給增加/減少節點,介面:addauth($type,$child,$parent),範例addauth("使用者","d8888","管理者")
2.增加/減少"path",也就是ACL的抽象化,介面addpath($path,$value),$path為許多$node的集合,範例$path:("使用者"=>"d8888","論壇權限"=>"版主","討論版"=>"電腦版"),addpath($path,true)
3.取得某path的返回值,並在有ambiguity的時候指定優先順序陣列,介面GetResult($path,$priority),$path可以指定一個到所有的tree structure,碰到無定義,無法解決的ambiguity以Exception解決,ambiguity時Exception包含所有的可能path
4.提供一簡單的介面,可以客制化編輯tree structure和ACL
5.提供filter,可以在呼叫addauth的時候對參數動手腳,比如傳入使用者名稱的時候,可以自動查table分別他的群組,如此一來可以達到權限物件可以整合現有表單的作用。

接下來會研究memcached,以及phpgacl的source code 全文連結

0 意見: