忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/20 10:34 |
PHP1-50:PHPでText/Highlighterの続き

見返していたらなんかメソッド呼ぶたびにオブジェクトを作成とか壮大に無駄なことをやっていたのでスリム化してみる。

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
<?php
    //初期設定
    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


2009/02/06 22:50 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP1-51:PHPでText/Highlighterのclass名を変更してみる | HOME | JavaScript2-7:jQueryで画像アップロードプレビュー>>
忍者ブログ[PR]