TemplatePower / PHP 8.2
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
public function __prepareTemplate ($tpl_file, $type)
{
$tplvar = 'tpl_rawContent' . $this->tpl_count;
if ($type == T_BYVAR) {
$this->{$tplvar}["content"] = preg_split( "/\n/", $tpl_file, - 1, PREG_SPLIT_DELIM_CAPTURE );
} else {
//Trigger the error in the local scope of the function
//trigger_error ("Some error", E_USER_WARNING);
$this->{$tplvar}["content"] = @file( $tpl_file ) or die( $this->__errorAlert( 'TemplatePower Error: Couldn\'t open [ ' . $tpl_file . ' ]!' ) );
}
$this->{$tplvar}["size"] = sizeof( $this->{$tplvar}["content"] );
$this->tpl_count ++;
return $tplvar;
}
{
$tplvar = 'tpl_rawContent' . $this->tpl_count;
if ($type == T_BYVAR) {
$this->{$tplvar}["content"] = preg_split( "/\n/", $tpl_file, - 1, PREG_SPLIT_DELIM_CAPTURE );
} else {
//Trigger the error in the local scope of the function
//trigger_error ("Some error", E_USER_WARNING);
$this->{$tplvar}["content"] = @file( $tpl_file ) or die( $this->__errorAlert( 'TemplatePower Error: Couldn\'t open [ ' . $tpl_file . ' ]!' ) );
}
$this->{$tplvar}["size"] = sizeof( $this->{$tplvar}["content"] );
$this->tpl_count ++;
return $tplvar;
}
Code (php)
1
Deprecated: Creation of dynamic property TemplatePower::$tpl_rawContent0 is deprecated in /***/public_html/templatepower/class.templatepower.inc.php on line 183
Vervelend wat dit is de basis van veel van mijn werk. Ik weet dat het script niet meer het jongste is, maar het werkt zo fijn en nog prima dus zie ik geen reden om over te stappen naar een andere engine, die mogelijk veel beter is dat zal ik meteen toegeven, maar stel je voor dat alles opnieuw moet...
Zien jullie aanvliegroutes? De oorzaak lijkt me duidelijk, het is PHP dat een andere werkwijze vereist, maar is hier een oplossing voor te bedenken?
https://github.com/Samoual/class.templatepower.inc.php/blob/main/class.templatepower.inc.php
Gewijzigd op 13/01/2024 16:55:41 door Veur Heur
dat wil zeggen dat bij een volgende php versie dit niet meer werkt.
dus niet meer
$this->verzinsels = 0
maar vooraf elke property definiëren.
in jouw geval zul je waarschijnlijk met arrays moeten werken. in de toekomst
Dat had ik begrepen, probleem echter is dat in deze class de property dynamisch zijn aangezien het vooraf niet weet hoeveel blokken het zal moeten gaan creëren.
Ik heb dit in een ver verleden ooit eens gebruikt, maar uiteindelijk ben ik maar naar Smarty overgestapt, die haast een zelfde notatie heeft. En in combinatie met Composer (daar heb ik hier over geschreven) kan je het makkelijk up-to-date houden.
Wat heb je liever? Bij elke PHP-migratie alles weer uittesten, en de boel blijven debuggen en fixxen, of eenmalig alles migreren naar Smarty, en deze netjes updaten?
Gewijzigd op 13/01/2024 18:27:29 door - Ariën -
Nou ja, aangezien het al zolang goed gaat en ik nooit heb hoeven debuggen, kies ik daar nu wel voor.
Daarnaast heeft Smarty ook goede cache-mogelijkheden.
We voegen die toe net boven de class TemplatePower extends TemplatePowerParser en Bob's your uncle.
Maar als je naar Smarty, of Twig overstapt dan heb je meteen een hoop mooie performance features erbij, en kan je het makkelijk up-to-date houden.
Nee hoor, zoals ik het tikte werkt het ook. Maar je zult begrijpen dat overstappen niet even gedaan is. Er zouden 100-en nieuwe templates moeten worden gemaakt, daar bovenop de leercurve. Maar in een nieuw project wellicht. Je hebt vast een goeie howto?
Assignen kom volgens mij overeen, en de notatie krijgt een variabele-karakter $ erbij.
http://www.sitemasters.be/tutorials/1/1/58/PHP/TemplateEngine:_TemplatePower
De blocks zijn volledig anders, maar je hebt in Smarty wel uitgebreide modifiers, if-structuren en operators (ongeveer) zoals PHP biedt. En data kan je nog cachen, en er is een {debug} modus om al je assigns in een popup te tonen.