LilyBBS API 0.10α Doc


目录

  1. 用户手册
    1. 简介
      1. 概述
      2. 版本及语言
      3. 开发代号:“Fat+”
      4. 功能说明
    2. 术语定义
    3. 参数设置
      1. 编码:Lily_EncodingConfig
      2. 更新:Lily_UpdateConfig
      3. 地址:Lily_UrlConfig
      4. Cookie:Lily_CookieConfig
      5. 其它:Lily_OtherConfig
    4. 数据更新策略
    5. 数据类型
      1. User : 用户信息
      2. Post : 帖子
      3. Theme : 主题
      4. Board : 版块
      5. Account : 账户
      6. Friend : 好友
    6. 注意事项
  2. 设计文档
    1. 类图
    2. 参数配制相关的类
      1. Lily_EncodingConfig
      2. Lily_UpdateConfig
      3. Lily_UrlConfig
      4. Lily_CookieConfig
      5. Lily_OtherConfig
    3. 更新框架相关的类
      1. Lily_IUpdater
      2. Lily_IUpdateCheck
      3. Lily_IUpdate
      4. Lily_TimeUpdateCheck
      5. Lily_UpdateCheck
    4. 静态方法集合 Util类
      1. Lily_EncodeUtil
      2. Lily_UpdateUtil
      3. Lily_UrlUtil
      4. Lily_AnalyseUtil
      5. Lily_CookieUtil
      6. Lily_OtherUtil
    5. Http请求相关的类
      1. 与php_http.dll的说明
      2. Lily_HttpMessage
      3. Lily_HttpRequest
      4. Lily_Response
    6. 数据相关类
      1. Lily_DataItem
    7. 设计思想
      1. 更新框架
      2. 自动更新的实现
  3. 已知BUGs
  4. 其它说明
  5. License

用户手册

简介

概述

LilyBBS API是由LilyStudio(小百合工作室)发布的非官方南京大学小百合BBS的部分功能的API。

版本及语言

LilyBBS API目前版本为0.10α,开发语言为php。不出意外的话会不定期更新。

关于其它语言的版本,可能要在php版本基本没有bug后再进行开发,以免重复劳动。

C# : 不出意外的话会有C#版本的。

JS : 原订的js版本,由于js跨域必须依赖后台,所以js版本没有实际的意义,固放弃开发。

Java : 由于java和C#的相似性,不准备开发java版的。

C++ : 仍在考虑中。。

参见: 第一个版本选择php的理由下一个版本选择C#的理由

开发代号:“Fat+”

LilyBBS API的开发代号为“Fat+”。

  • 其官方解释如下:

    “Fat+”即“More Fatter”。而“增肥”和“开发LilyBBS API”一直是我的梦想,固将二者等同。而且,Fat本身有“丰富”的含义,也是希望开发出的API功能更加丰富。

  • 真实含义如下:

    “Fat”实际是“Fish & Tony”。在静茹大婚的这段时间里,自然要祝福二位一下咯~

    后面的“+”吧。。其实是“Loveplus”的“Plus”,最近等LP的汉化等的粉痛苦。。

功能说明

该版本包含以下功能的接口:

  • 用户、贴子、主题、版面的基本信息。
  • 好友列表,好友的增减
  • 十大(暂不包含各区热点)

术语定义

参见: 关于类名前缀Lily_的说明, 数据类型

参数设置

所有的可设参数均列在了*Config类中,下面是具体的说明:

编码:Lily_EncodingConfig

  • FILE_ENCODING : string

    指该LilybbsApi.php文件的编码方式。用于代码中一些中文常量比较前的译码。除非手动更改了文件的编码(如将文件另存为其它编码),否则请不要更改此项。

  • OUTPUT_ENCODING : string

    默认为'UTF-8'。指输出网页的编码方式,请根据你的实际情况更改。

  • LILYBBS_ENCODING : string

    默认为'GBK'。指“小百合BBS”的编码,请不要更改该选项。

更新:Lily_UpdateConfig

对于更新参数的设置将直接影响系统的性能。生存周期过短,会导致请求较多,消耗系统资源。生存周期过长,会导致数据失效(过期)。所以请根据不同的数据,设定合理的生存周期。注意:并不是说生存周期到了便会立刻更新。具体请参见:数据更新策略

  • AUTO_UPDATE : bool

    默认为true。是否自动更新。仅当为true时,下面的参数才会有效。

  • DEFAULT_UPDATE_LIFETIME : int

    默认为60(单位:秒)。在未设置的请况下,Updater的生存周期。

  • DEFAULT_USERINFO_LIFETIME : int

    默认为-1(单位:秒)。用户信息的生存周期。小于0表示不自动更新。因为user信息较为固定,固默认情况下不进行更新。

  • DEFAULT_POST_LIFETIME : int

    默认为1200(单位:秒)。贴子的生存周期。由于单个帖子被修改的概率较低。固默认情况下生存周期较长。

  • DEFAULT_THEME_LIFETIME : int

    默认为20(单位:秒)。主题的生存周期。主题变动比较频繁。所以生存周期较短。

  • DEFAULT_BOARD_LIFETIME : int

    默认为-1(单位:秒)。版块本身(不包含板块内的主题)的生存周期。默认不自动更新。

  • DEFAULT_THEME_SET_LIFETIME : int

    默认为20(单位:秒)。版块内的主题集合。由于更新频繁,默认生存周期很短。

  • DEFALUT_ACCOUNT_LIFETIME : int

    默认为-1(单位:秒)。账户信息基本不变,固默认不更新。

参见:数据更新策略

地址:Lily_UrlConfig

有关url的设置,需要更改的可能性较小,可以忽略这部分。Url中的大括号中的部分在程序运行时会被替换成相应的属性。

  • LILYBBS_URL : string

    默认为'http://bbs.nju.edu.cn/'。百合BBS的地址。

  • LILYBBS_IP : string

    默认为'219.219.114.4'。百合BBS的IP。

  • USERINFO_QUERY : string

    默认为'bbsqry?userid={id}'。用于查寻User信息的Url。

  • POST_QUERY : string

    默认为'bbscon?board={board}&file={file}&num={num}'。用于查寻Post信息的Url。

  • POST_REGULAR : string

    默认为'[^?]*\?board=([^&]*)&file=([^&]*)&num=([^&]*)'。用于将一个绐定的Post Url解析成board, file, name 属性的正则表达式。

  • POST_REGULAR_BOARD_INDEX : int

    默认为1。board属性在POST_REGULAR的Match结果中所在的位置。

  • POST_REGULAR_FILE_INDEX : int

    默认为2。file属性在POST_REGULAR的Match结果中所在的位置。

  • POST_REGULAR_NAME_INDEX : int

    默认为3。name属性在POST_REGULAR的Match结果中所在的位置。

  • THEME_QUERY : string

    默认为'bbsfind0?board={board}&gid={gid}'。用于查寻Theme信息的Url。

  • THEME_REGULAR : string

    默认为'[^?]*\?board=([^&]*)&gid=([^&]*)'。用于将一个绐定的Theme Url解析成board, gid属性和正则表达式。

  • THEME_REGULAR_BOARD_INDEX : int

    默认为1。board属性在THEME_REGUALR的Match结果中所在的位置。

  • THEME_REGULAR_GID_INDEX : int

    默认为2。gid属性在THEME_REGUALR的Match结果中所在的位置。

  • BOARD_THEME_MODE_QUERY : string

    默认为'bbstdoc?board={id}'。版块主题模式的Url。用于获取版块的主题列表。

  • BOARD_POST_MODE_QUERY : string

    默认为'bbsdoc?board={id}'。版块一般模式的Url。用于获取版块的其它信息。

  • THEME_COUNT_PRE_PAGE : int

    默认为19。主题模式下,一页所显示主题的数量。不包含置顶贴和下一页的第一贴(也就除去最后一页外,每一页最下面的那个贴。)

  • THEME_SET_QUERY : string

    默认为'bbstdoc?board={id}&start={num}'。用于获取特定的序号的主题的Url。

  • ALL_BOARD_LIST_URL : string

    默认为'bbsall'。所有版块的列表,原用于获得版块名称,但由于效率的问题(该页面不是一般的大),最后没有被采用。

  • ALL_BOARD_ID_LIST_URL : string

    默认为'bbsall?js=1'。所有版块的id列表。此版本中并无用途。

  • TOP_10_URL : string

    默认为'bbstop10'。十大的地址。

  • LOGIN_QUERY : string

    默认为'bbslogin?type=2&id={id}&pw={password}'。于用登陆的url。

  • FRIEND_LIST_URL : string

    默认为'bbsfall'。用于查寻所有好友的url。

  • 'bbsfdel?userid={id}' : string

    默认为'bbsfdel?userid={id}'。用于删除好友的url。

  • ADD_FRIEND_QUERY : string

    默认为'bbsfadd?userid={id}&exp={introduce}'。用于增加好友的url。

Cookie:Lily_CookieConfig

有关百合Cookie的设置,变动性较小,可以忽略。

  • NAME_NUM : string

    默认为'_U_NUM'。百合BBS的Cookie中num项的名称。

  • NAME_UID : string

    默认为'_U_UID'。百合BBS的Cookie中uid项的名称。

  • NAME_KEY : string

    默认为'_U_KEY'。百合BBS的Cookie中的key项的名称。

其它:Lily_OtherConfig

数据更新策略

当且仅当访问(访问:通常含义的对属性的get,不包含set)可更新数据时,才会触发以下更新检测流程。不访问数据的情况下,无论数据是否过期,都不会主动更新。

更新检测的流程如下:

  1. if该对象没有处在更新阶段
    1. if所要获取的数据是可更新数据
      1. if所要获取的数据存在
        1. ifLily_UpdateConfig::AUTO_UPDATE //自动更新开启
          1. if数据生存时间已经超过该对象的生存周期
            1. do更新
      2. else//所要获取的数据不存在
        1. do更新
  2. return所要数据

更新的流程如下:

  1. //在更新过程中不会再次调用更新命令
  2. assert该对象处没有在更新阶段
  3. do将该对象标记为“正在更新中”
  4. do获取Updater,调用更新函数
  5. do去掉该对象的“正在更新中”的标记

用户可以通过自行调用对象的update() : void方法进行强制更新。(调用该方法时会跳过更新检测,直接更新)

举例说明1:

  1. $board=Lily_Board::getBoard('LilyStudio'); // 创建对象,不发生更新
  2. echo $board->id; // id不是可更新对象,不发生更新
  3. echo $board->name;
  4. // 当Lily_OtherConfig::USE_LOCAL_BOARD_NAME为真时,采用本地的存储的名称。
  5. // 当Lily_OtherConfig::USE_LOCAL_BOARD_NAME为假时,发生更新

举例说明2:

  1. // 一般情情况下不会通过下面这种方法创建Theme对象,而是通过Board的themes获得。这里仅是便于说明。
  2. $theme=newLily_Theme($url); // 创建主题对象,不发生更新。
  3. echo $theme->title;// 获取可更新对象,进行更新。

举例说明3:

  1. $theme=newLily_Theme($url); // 同上
  2. $theme='我通过其它手段获取到的标题';
  3. echo $theme->title;// 不发生更新,显示:我通过其它手段获取到的标题
  4. sleep(Lily_UpdateConfig::DEFAULT_THEME_LIFETIME+$sometime);
  5. echo $theme->title;// 发生更新,因为当数据已经过期

数据类型

带下滑线的数据不是可更新数据其余为可更新数据。

User : 用户信息

属性 类型 说明
id string 用户名
exist bool 用户是否存在
nickname string 昵称
onSiteCount int 上站次数
postCount int 发贴次数
constellation string 星座
lastLoginTime string 上次上站时间
lastLoginIp string 上次登陆ip
mail string 邮箱
experience int 经验值
experienceLevel string 等级
performance int 表现值
performanceLevel string 表现值等级
health int 生命值
online bool 是否在线
lastExitTime string 上次离线时间

Post : 帖子

属性 类型 说明
url string 地址(*)
board Board 版面(*)
file string 文件名(*)
num string (*)
gid string 组id
author User 作者
visited int 人气
tilte string 标题
postTime string 发布时间
postIp string 发布的IP
content string 内容

Theme : 主题

属性 类型 说明
url string 主题的地址
board Board 版面(*)
gid string 组id(*)
posts post[] 帖子列表(数组)

Board : 版面

属性 类型 说明
id string 版面id
name string 名称
masters User[] 版主
themeCount int 主题总数
themes ThemeNum 主题的集合

Account : 账户

属性 类型 说明
id string 账户id
friend [ string => Lily_Friend ] 好友

Friend : 好友

属性 类型 说明
* 继承自User的所有属性 *
id string 好友的id
owner Account 拥有该好友的那个账号

注意事项

  • 本API由LilyStudio发布,非官方API。由使用此API造成的任何损失LilyStudio概不负责。
  • 本API本身并不包含挂百合经验的功能。任何修改代码达到此目的的人,请自行承担封id风险。

设计文档

类图

IUpdater
   
   
UserUpdater
   
PostUpdater
   
ThemeUpdater
   
BoardUpdater
   
ThemeSetUpdater
   
AccountUpdater

 

IUpdate
   
DataItem
   
   
User
   
Friend
   
Post
   
Theme
   
Board
   
ThemeSet
   
Account

 

HttpMessage
   
   
HttpRequest
   
HttpResponse

 

(类名中省略了Lily_前缀)

上面的类图乃我用html一字一字敲出来的。。。话说忽然有种写一个生成html类图的工具的想法。

参数配制相关的类

Lily_EncodingConfig

说明:

静态类。包含有关编码方面的参数。

成员:

Lily_UpdateConfig

说明:

静态类。包含关于更新策略(时机)。

成员:

Lily_UrlConfig

说明:

静态类。包含向百合发请时所要用到的Url及其相关。

成员:

Lily_CookieConfig

说明:

静态类。包含关于百合的Cookie相关设置。

成员:

Lily_OtherConfig

说明:

静态类。包含其他设置的。

成员:

更新框架相关的类

Lily_IUpdater

说明:

接口。是对所有进行更新操作的类的抽象。是系统更新框架的一部分。

成员:
  • update() : void [Public]

    更新与该Updater对应的IUpdate对象(即包含该IUpdater的IUpdate)。

(参见:更新框架

Lily_IUpdateCheck

说明:

接口。用于检测所对应的IUpdate是否需要更新。

成员:
  • updated() : void [Public]

    通知该对象:与该对象对应的IUpdate的更新过程已经完成。以便于下次检测时进行参考。

  • needUpdate() : bool [Public]

    检测与该对象对应的IUpdate是否需要更新。具体的检测策略由该类的子类实现。

    RETURN : true : 需要更新; false : 不需要更新;

(参见:更新框架

Lily_IUpdate

说明:

接口。对所有包含可更新数据的类的抽象。

成员:
  • getUpdater() : IUpdater [Public]

    RETURN : 与该对象对应的Updater

  • getUpdateCheck() : IUpdateCheck [Public]

    RETURN : 与该对象对应的UpdateCheck

(参见:更新框架

Lily_TimeUpdateCheck

说明:

继承自Lily_IUpdateCheck。对Lily_IUpdateCheck的实现,依据时间判断数据是否过期。

成员:
  • $lastUpdateTime : int [Public ReadOnly]

    上次更新的时间,由time()获得的格式。

  • $lifeTime : int [Public]

    所对应的IUpdate的生存周期

  • everUpdated : bool [Public ReadOnly]

    是否曾进行过更新。

Lily_UpdateCheck

说明:

继承自Lily_TimeUpdateCheck。 在Lily_TimeUpdateCheck的时间判定的基础上加上了对 Lily_UpdateConfig :: AUTO_UPDATE 的判定。最终实现了完整的更新检测过程。

(参见:数据更新策略

静态方法集合 Util类

Lily_EncodeUtil

说明:

静态类。与编码相关的实用方法。

成员:
  • Encode ( $text : string ) : string [Public Static]

    将由百合BBS得到的字符串的编码由 Lily_EncodingConfig::LILYBBS_ENCODING 转化到 Lily_EncodingConfig::OUTPUT_ENCODING 。以便于输出。

    Return : 转换后的字符串。

    (参见:Lily_EncodingConfig

  • ConstStr ( $text : string ) : string [Public Static]

    将代码中出现的中文字符常量的编码由 Lily_EncodingConfig::FILE_ENCODING 转化到 Lily_EncodingConfig::OUTPUT_ENCODING 。以便于比较。

    Return : 转换后的字符串。

Lily_UpdateUtil

说明:

静态类。更新检测或更新过程中要用到的实用方法。

成员:
  • update ( $updateItem : IUpdate ) : bool [Public Static]

    首先检查所传入的IUpdate是否需要更新(通过 $updateItem->getUpdateCheck() 来获取IUpdateCheck进行检查)。若需要,则进行更新(通过 $updateItem->getUpdater() 来获取IUpdater进行更新),并返回true。 若不需要,返回false

    Return : true : 进行了更新; false : 没有进行更新

  • forceUpdate ( $updateItem : IUpdate ) : void [Public Static]

    不进行更新检测,强制博时价值进行更新。

  • updateBegin ( $dataitem : DataItem ) : void [Public Static]

    将一个对象标记为“正在进行更新”。

  • updateEnd ( $dataitem : DataItem ) : void [Public Static]

    取消一个对象的“正在进行更新”标记。

  • isUpdating ( $dataitem : DataItem ) : bool [Public Static]

    检测一个对象是否被标记了“正在进行更新”。

    Return : true: 有“正在进行更新”的标记; false没有。

Lily_UrlUtil

说明:

静态类。与Url相关的实用方法。

成员:
  • isUserInfoUrl( $url : string ) : bool [Public Static]

    判断所传入的url是否是用户信息的Url。

    Return : true : 是; false : 否

  • isPostUrl( $url : string ) : bool [Public Static]

    判断所传入的url是否是帖子的Url。

    Return : true : 是; false : 否

  • isThemeUrl( $url : string ) : bool [Public Static]

    判断所传入的url是否是主题的Url。

    Return : true : 是; false : 否

  • isBoardThemeModeUrl( $url : string ) : bool [Public Static]

    判断所传入的url是否是主题模式的版块的Url。

    Return : true : 是; false : 否

  • isBoardPostModeUrl( $url : string ) : bool [Public Static]

    判断所传入的url是否是一般模式的版块的Url。

    Return : true : 是; false : 否

  • getUserInfoUrl( $id : string ) : string [Public Static]

    Return : 用于查询id为$id的用户信息的Url

  • resolvePostUrl( $post : Post ) : void [Public Static]

    将传入的Post的$post->url解析成$board$file$num,并分别设置到$post->board$post->file$post->num上。

  • generatePostUrl( $post : Post ) : void [Public Static]

    resolvePostUrl的逆过程。依照传入的Post的$post->board$post->file$post->num来生成$url,并设置到$post->url上。

  • resolveThemeUrl( $theme : Theme ) : void [Public Static]

    将传入的Theme的$theme->url解析成$board$gid,并分别设置到$theme->board$theme->gid上。

  • generateThemeUrl( $theme : Theme ) : void [Public Static]

    resolveThemeUrl的逆过程。依照传入的Theme的$theme->board$theme->gid来生成$url,并设置到$theme->url上。

  • getBoardThemeModeUrl( $id : string ) : string [Public Static]

    Return : id为$id的版块的主题模式的Url。

  • getBoardPostModeUrl( $id : string ) : string [Public Static]

    Return : id为$id的版块的一般模式的Url。

  • getThemeSetUrl( $id : string $num : int ) : string [Public Static]

    Param :

    1. $id : 要查询的版块的id。
    2. $num : 要查询帖子的序号。

    Return : 用于查询板块中特定序号的贴子的url。

  • getLoginUrl( $id : string, $password : string ) : string

    Param :

    1. $id : 用户id。
    2. $password : 密码。

    Return : 用于登陆的Url。

  • getFriendListUrl() : string

    Return : 好友列表的Url。

  • getAddFriendUrl( $id : string, $password : string ) : string

    Params :

    1. $id : 好友id。
    2. $introduce : 好友说明。

    Return : 添加好友的Url。

  • getDelFriendUrl( $id : string ) : string

    Params :

    1. $id : 好友id。

    Return : 删除好友的Url。

Lily_AnalyseUtil

说明:

静态类。用于解析html的实用方法集。

属性:
  • fetchProp( $ipnut : string, $begin='' : string, $end='' : string ) : string

    获取输入字符串($ipnut )中夹在$begin$end的部分。若$end'',则为$begin到字符串结尾。若$begin'',则为字符串开始到$end。多用于解析html时,获取特定的属性。

Lily_CookieUtil

说明:

静态类。和Cookie相关的实用方法集。

成员:
  • generateCookie( $cookieStr : string ) : Lily_Cookie [Public Static]

    将登陆后百合服务器返回的Cookie由解析成字符串解析成Lily_Cookie用来维持Session。

  • setCookie( $httpMessage : Lily_HttpMessage, $cookie : Lily_Cookie ) : void [Public Static]

    $cookie转换成Http消息头中的Cookie项,并添加到$httpMessage的Header中。

Lily_LoginUtil

说明:

静态类。与登陆验证有关的实用方法集。

成员:
  • login( $id : string, $password : string ) : Lily_Cookie / bool [Public Static]

    登陆,成功返回Cookie,否则返回false。

    Param :

    1. $id : 账号id。
    2. $password : 账号密码。

Http请求相关的类

与php_http.dll的说明

事实上在php_http.dll中已经包含了HttpMessage、HttpRequest、HttpResponse三个类。但考虑很多php环境并没有php_http扩展,而且功能太过于完整,用在这里反到有种牛刀杀鸡的感觉。毕竟,只是为了维持一下Session,所以就自己写了几个简单的类。仅能实现程序中必要的功能。并不适应其他的程序环境。

Lily_HttpMessage

说明:

抽象的Http消息。

成员:
  • getHeaders() : [ string=>string] [Public]

    Return : 存储Http头信息的数组。

  • getHeader( $name : string ) : string [Public]

    Return : Http头中名称为$name(如'Content-Type')的项的值。

  • addHeader( $name : string, $value : string ) : void [Public]

    添加Http头项。

    Param :

    1. $name : 名称
    2. $value : 键值

  • getContent() : string [Public]

    Return : Http消息的Content。

  • setContent( $content : string ) : void [Public]

    设置Http消息的Content。

Lily_HttpRequest

说明:

继承自Lily_HttpMessageHttp请求。

成员:
  • __construct( $url='' : string, $method='GET' : string ) [Public]

    构造函数。

    Param :

    1. $url : http请求的Url。
    2. $method : http请求的方法。'GET' / 'SET'。

  • resolveUrl( $url : string ) : string [Public]

    就是nslookup啦~~不过偷了个懒哈~看看方法体就知道了~

  • generateHeader( $output='' : string ) : string

    生成最终的文本形式的Http请求的头。生成的字符串会附加在$output上,并返回。

  • generateContent( $output : string ) : string

    生成最终的文本形式的Http请求的内容。生成的字符串会附加在$output上,并返回。

  • generateMessage() : string

    Return : 最终的文本形式的Http请求。

  • clearHeader() : void

    清空Http请求的头数据。

  • getResponse() : Lily_HttpResponse

    发送该http请求,并将Response返回。

Lily_HttpResponse

说明:
继承自HttpMessage。本版本中与HttpMessage并无差别,仅为了代码的语义性。

数据相关类

Lily_DataItem

说明:

实现Lily_IUpdate,抽象类。是对所有可更新的类的抽象。实现了对数据存储时的更新检测。

成员:
  • __construct( $dataLifeTime : int ) [Public]

    构造函数。

    Param :

    1. $dataLifeTime : 此种对象的生存周期。

  • updatePropCheck( $name : string ) : bool [Protected Abstract]

    判断名为$name的属性是否是可更新数据。由子类实现。

  • createUpdater() : Lily_IUpdater [Protected Abstract]

    创建一个对应该对象的IUpdater。由子类实现。

设计思想

更新框架

Lily_IUpdateLily_IUpdaterLily_IUpdateCheck三个类的目的是将“更新过程”、“更新检测”和“可更新数据”分离开来。一来,更新的过程的变动比较频繁,二来,更新检测应能灵活的变动,适应不同的需求。将三者分离开来用利于代码的维护和修改。

另外,为了让开发人员更高效的开发,尽可能减少记忆负担,默认情况下,由系统自动完成更新的各项操作。(就好比很多语言中的垃圾回收)。

自动更新的实现

自动更新是由DataItem__get来实现的。__get方法通过updatePropCheck来检测是否是可更新数据,如果是,则在属性名前加'_'并返回对应属性。(其实这里用一个数组来存储所有的可更新数据可能更好一点)。

已知BUGs

暂无已知Bug。

其它说明

  1. 第一个版本选择php的理由

    • php的普及,多数Web开发人员都熟悉php。
    • 降低部署的门槛,现有的虚拟主机多数是php的,开发人员可以方便的部署。以此来获得更多的反馈。
  2. 下一个版本选择C#的理由

    • 自己对C#较为熟悉
    • php为弱类型,C#为强类型。提供两种语言可以绐想要将其改写到其它平台的人一个参考。
    • 方便Asp.net用户使用。
  3. 本地存储的版块名称

    现有的获取版块各称的方法要求额外请求一次。而版块各称变化的可能性很小。所以,利用本地存储的名称可以有效的减少请求次数。可以通过USE_LOCAL_BOARD_NAME来设置是否使用本地数据。

  4. 关于类名前缀Lily_的说明

    因为命名空间的概念是在php 5.3以后才开始出现的,而php 5.2x仍占着很大比例,所以为了通用性,没有使用命名空间,而是用在类名前加'Lily_'的前缀来实现的。当然了,这也降低了代码的美观,如果想去前缀,全局替换掉'Lily_'即可。

License

MIT License。代码中用了Simple Html Dom项目。所以就沿用了License。