見返していたらなんかメソッド呼ぶたびにオブジェクトを作成とか壮大に無駄なことをやっていたのでスリム化してみる。
highlighter.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//初期設定
require_once('Text/Highlighter.php');
class pearHighLightModel {
//メンバ変数
private $highlight = '';
private $language = 'PHP';
private $renderer = 'Html';
private $numbers = FALSE ;
//コンストラクタ
public function __construct(){
}
//ハイライトして返す
public function highlight($str){
$this->_makeHighlighter();
return $this->highlight->highlight($str);
}
//言語を変更
public function setLang($language){
$this->language=$language;
}
//レンダリング変更
public function setRenderer($renderer){
$this->renderer=$renderer;
}
//表示形式を変更
public function setNumbers($numbers){
$this->numbers=$numbers;
}
//オブジェクト作る
private function _makeHighlighter(){
require_once('Text/Highlighter/Renderer/'.$this->renderer.'.php');
$renderclass='Text_Highlighter_Renderer_'.$this->renderer;
$this->highlight = Text_Highlighter::factory($this->language);
$this->highlight->setRenderer(
new $renderclass(array('numbers'=>$this->numbers))
);
}
#↓クラスのおわり
}
|
これなら実際にText_Highlighterインスタンスを作成するのはpearHighLightModel::highlight()を呼んだときだけなので、requireしたけど結局使わなかったというような時にも負担軽減になります。
さらにrequire_once('Text/Highlighter.php');の行もpearHighLightModel::_makeHighlighter()に含めることもできますが、そこまでやるとText_Highlighter::setRenderer()で使用するHL_NUMBERS_TABLEのような定数まで使えなくなるので不便です。
http://pear.php.net/manual/ja/package.text.text-highlighter.oc.php
そもそもText/Highlighterなんぞ、そんなに負荷がかかるほど使わないという噂もありますが気にしない。
PR
トラックバック
トラックバックURL: