TemplatePower / PHP 8.2

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Veur Heur

Veur Heur

13/01/2024 16:54:23
Quote Anchor link
Al heel wat jaren (14+) gebruik ik TemplatePower als template engine in mijn projecten. Het script heeft PHP 4, 5 en 7 overleefd en ook met PHP 8.1 draait het nog altijd prima. Echter nu we bij PHP 8.2 aankomen, begint het problemen te geven. In het volgende stuk code krijg ik de volgende melding:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

28/04/2024 10:08:39
 
Ivo P

Ivo P

13/01/2024 17:12:07
Quote Anchor link
deprecated
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
 
Veur Heur

Veur Heur

13/01/2024 17:25:30
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

13/01/2024 18:26:05
Quote Anchor link
Oeh! TemplatePower.....
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 -
 
Veur Heur

Veur Heur

13/01/2024 18:29:34
Quote Anchor link
Nou ja, aangezien het al zolang goed gaat en ik nooit heb hoeven debuggen, kies ik daar nu wel voor.
 
- Ariën  -
Beheerder

- Ariën -

13/01/2024 18:32:07
Quote Anchor link
Daarnaast heeft Smarty ook goede cache-mogelijkheden.
 
Veur Heur

Veur Heur

13/01/2024 18:57:18
Quote Anchor link
Kennelijk is dit de oplossing: #[AllowDynamicProperties]

We voegen die toe net boven de class TemplatePower extends TemplatePowerParser en Bob's your uncle.
 
- Ariën  -
Beheerder

- Ariën -

14/01/2024 23:51:33
Quote Anchor link
#[\AllowDynamicProperties] zal je bedoelen.
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.
 
Veur Heur

Veur Heur

15/01/2024 07:45:30
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

15/01/2024 09:35:10
Quote Anchor link
Behalve de blocks zie ik nog wel enkele overeenkomsten tussen TemplatePower.

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.