Zurück   klamm-Forum > klamm-Lose > Lose4Scripts > Lose4Scripts (erledigt)

 
 
LinkBack Themen-Optionen Ansicht
Alt 22.12.2006, 22:54:20   #1 (permalink)
Erfahrener Benutzer

ID: 99340
Lose-Remote

Reg: 20.04.2006
Beiträge: 1.256
Standard Problem bei Template Klasse (Apolda)

Hallo

ich benutze die Apolda Template klasse!

hier der code:

PHP-Code:
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:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
<?php

define
("TEMPLATE_ERR_FILE","Could not load template file.");

/**
 * Apolda Simple Template class. 
 * This file is part of Apolda Web Tool Suite.
 *
 * The complete apolda classes are distributed under the 
 * GNU Lesser General Public License.
 * See the lesser.txt file for details.
 * 
 * @author    Ralf Geschke <ralf@kuerbis.org>
 * @copyright 2002 by Ralf Geschke
 * @version   $Id: class_template.inc.php,v 1.6 2002/07/16 09:05:07 geschke Exp $
 * @access    public
 */
class Template
{

    var 
$delimiterStart "{";
    var 
$delimiterEnd "}";

    var 
$t;
   
    var 
$templatefile;
    
    
/**
     * Constructor function. 
     * If a template filename is submitted, this function will
     * initialize the template object tree.
     *
     * @param    string $filename  Name of template file.
     * @access   public
     * @return   void
     */
    
function Template($filename "")
    {
        
/* todo: 
           - remove setting error messages from constructor 
           ( to a base class ? )
         */
        
$this->loadTemplateFile($filename);
    }

    
/**
     * Set start delimiter
     * Call this function if you wish to change the default start
     * delimiter '{' to another character.
     * 
     * @param    string $delim
     * @return   void
     */
    
function setStartDelim($delim="{"
    {
        
$this->delimiterStart $delim;
        }

    
/**
     * Set end delimiter
     * Call this function if you wish to change the default end
     * delimiter '}' to another character.
     *
     * @param    string $delim
     * @return   void
     */
    
function setEndDelim($delim="}"
    {
        
$this->delimiterEnd $delim;
        }
    

    
/**
     * Load and initialize template file.
     * This is only useful if it is not possible to 
     * set a template filename by creating an instance of
     * the template class.
     * 
     * @param    string $filename  Name of template file.
     * @access   public
     * @return   void
     */
    
function loadTemplateFile($filename "")
    {
        if (!
$filename)
        return 
false;
        if (
$filename)
        
$this->templatefile $filename;
        if (!
$fp = @fopen($this->templatefile,'r'))
        {
        die(
TEMPLATE_ERR_FILE.' \''.$this->templatefile.'\'');
        }
        
$this->fread($fp,filesize($this->templatefile));
        
fclose($fp);
        
$this->_initTemplate();
    }

    
/**
     * Submit a string variable as template content.
     * This is useful if your template doesn't exist as file,
     * e.g. if it is saved in a database.
     * 
     * @param    string $templatestring
     * @access   public
     * @return   void
     */
    
function loadTemplateContent($templatestring="")
    {
        
$this->$templatestring;
        
$this->_initTemplate();
    }

    
/**
     * Parse the template.
     * This function creates the template object tree and replaces contents
     * of blocks with simple placeholders. 
     * 
     * @access   private
     * @return   void
     */
    
function _initTemplate()
    {
        
preg_match_all("/<!--\s+BEGIN\s+(.*)?\s+-->\s*\n*\s*(.*)\s*\n*\s*<!--\s+END\s+(\\1)\s+-->/ms",$this->t,$ma);
        for (
$i 0$i count($ma[0]); $i++)
        {
        
$search "/\s*\n*<!--\s+BEGIN\s+(" $ma[1][$i] . ")?\s+-->(.*)<!--\s+END\s+(" $ma[1][$i]. ")\s+-->\s*\n*/ms";
        
$replace $this->delimiterStart $ma[1][$i] . $this->delimiterEnd;
        
$this->bl[$ma[1][$i]] =& new Template();
        
$this->bl[$ma[1][$i]]->loadTemplateContent($ma[2][$i]);
        
$this->preg_replace($search,$replace,$this->t);
        }
    }

    
/**
     * Fetch a block out of the template. 
     * If the block exists, this function returns a Template object,
     * otherwise nothing (false).
     * When parsing the template, the blocks will removed
     * into Template objects and replaced with placeholders. 
     * The name of the placeholder is identical to the name 
     * of the removed block.
     * 
     * @param    string $blockName
     * @access   public
     * @return   object Template or boolean false
     */
    
function fetchBlock($blockName)
    {
        if (isset(
$this->bl[$blockName]))
        return 
$this->bl[$blockName];
        else
        return 
false;
    }

    
/**
     * Assign value to an existing placeholder. 
     * If this function is called multiple, the contents
     * will be added. 
     * 
     * The parameter $varName can be a string, an associative 
     * array or a Template object. 
     * 
     * @param    mixed $varName
     *           Allowed types:    Requirements:
     *           string            $varValue            
     *           array             Array format: 
     *                             array ("name_of_placeholder" => Value,
     *                                    ... )
     *           object            Template object or any object which
     *                             returns HTML code via get() method.
     *
     * @param    string $varValue (optional)
     * @access   public
     */
    
function assign($varName,$varValue=false)
    {
        if (
is_array($varName))
        {
        foreach (
$varName as $key => $value)
            {
            
$this->pl[$key][] = $value;
            }
        }
        else
        {
        
$this->pl[$varName][] = $varValue;
        }
    }

    
/**
     * Delete the contents of submitted variables.
     * 
     * @param    none
     * @access   public
     */
    
function reset()
    {
        unset(
$this->pl);
    }

    
/**
     * Print a template with all replacements done.
     * 
     * @param    none
     * @access   public
     */
    
function out()
    {
        print 
$this->get();
    }

    
/**
     * Returns a template with all replacements done. 
     * 
     * @param    none
     * @access   public
     * @return   string parsed template content
     */
    
function get()
    {
        if (
is_array($this->pl))
        {
        foreach (
$this->pl as $key => $value)
            {
            
$search $this->delimiterStart $key $this->delimiterEnd;
            
$replaceText "";
            for (
$i 0$i count($this->pl[$key]); $i++)
            {
                if (
is_object($this->pl[$key][$i]))
                
$replaceText .= $this->pl[$key][$i]->get();
                else
                
$replaceText .= $this->pl[$key][$i];
            }
            
$this->str_replace($search,$replaceText,$this->t);
            }
        }
        return 
$this->t;
    }

}
?>
so das prob: bei php5 will der fetch_block einfach nicht richtig ersetzt werden!
so normale {bla} ersetzen funzt normal, aber im block werden die {bla} einfach nicht ersetzt!
bei php4 klappt alles einwandfrei!
wer mir die lösung sagt bekommt en paar löschen!
 
Programmierer ist offline  
 

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] EF2-Klasse theHacker FAQ und Archiv 9 12.07.2010 21:58:53
Bierkrugs AVA-Template Shop Jedes Template nur 250.000Lose Bierkrug Lose4Graphics (erledigt) 8 22.03.2007 18:02:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47:25 Uhr.