- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :CodeReading/PukiWiki/1.3 へ行く。
- 1 (2007-12-30 (日) 02:57:46)
- 2 (2008-02-11 (月) 15:29:00)
- 3 (2008-12-07 (日) 17:56:36)
- 4 (2009-01-18 (日) 21:23:03)
- 5 (2009-08-30 (日) 11:15:31)
- 6 (2009-09-19 (土) 16:37:13)
- 7 (2009-09-19 (土) 16:49:41)
- 8 (2009-09-19 (土) 16:56:54)
- 9 (2009-11-07 (土) 01:15:57)
- 10 (2011-12-14 (水) 01:29:17)
- 11 (2012-08-27 (月) 21:05:20)
- 12 (2012-09-20 (木) 06:41:53)
- 13 (2013-03-20 (水) 22:31:00)
目次 † 
- その他[?]
関連 † 
公式サイト † 
http://pukiwiki.sourceforge.jp/
継承されているクラスを含むファイル † 
lib\config.php
lib\convert_html.php
lib\diff.php
lib\make_link.php
※plugin\以下を除く。
plugin\以下で継承されているクラスを含むファイル plugin\attach.inc.php plugin\dump.inc.php plugin\map.inc.php plugin\showrss.inc.php plugin\tracker.inc.php
ページ内のWikiTextはオブジェクト化される。
それ以外は非オブジェクト指向。
…はオブジェクト化してある。
プラグインはWikiFormatの一部になっている。
make_linkと関連のあるファイル † 
lib\convert_html.php
lib\file.php
lib\html.php
require()は全てlib\pukiwiki.phpで行われている。
ページの編集はインスタンス構造の編集 † 
ページの内容がElement系インスタンスの設計書になっている。
Element系のクラスにはBody、Div、Tableなどがある。
どのページもBodyインスタンスとして扱われ、ページ内のWikiFormatもElement系インスタンスのどれかになる。
ブロック型WikiFormatには他のWikiFormatを入れることができるが、これは入れ子構造のElement系インスタンスになる。
そういうわけで…
- ページはBodyインスタンスになる
- #brなどのWikiFormatはElement系インスタンスのどれかになる
- Bodyインスタンスの中にはElement系インスタンスが複数入っている状態になる
WikiFormatごとに異なるHTMLが生成されるが、この差異がElement系サブクラスの違い。
WikiFormatはどれも引数を受けてHTMLを生成するが、こういった共通部分がElementというスーパークラスで定義されている。
入れ子構造になったElement系インスタンスはDecoratorパターンになっており、HTML生成時にはその入れ子構造を保ったHTMLを生成するようになっている。
Keyword:Decorator
※Decoratorパターンは「付け加え」のパターン。コードを複雑にせずに機能を付け加える。PukiWikiではWikiFormatやプラグイン呼び出しの多重構造を実現するために用いられている。このパターンによって、新しいWikiFormatやプラグインを追加するとき、何も工夫せずに他のWikiFormatと入れ子構造にすることができる。
(全てのプラグインはElement系オブジェクトの一部になるので、何もしなくてもDecoratorパターンの一部になる)
Element系クラスの中でも、BodyとDivは特殊。
概要 † 
テキスト(ページの内容)→オブジェクト→HTMLがPukiWikiの主な動作。
それ以外は他のWebアプリと同様な部分と、プラグインになる。
PukiWiki本体はプラグインを呼び出すためのフレームワーク。プラグインがPukiWikiの全機能を実現している。
プラグイン部分はプラグインに一任されていて、制約はない。限られているのは実行タイミングくらい。
プラグインを呼び出すにはページ内にプラグイン呼び出しのWikiFormatを書いたり、URLクエリーにプラグイン名を書く必要がある。