fenom-template / fenom

Template Engine for PHP. Maintainers wanted!
Other
446 stars 108 forks source link

в modx 3 и php8 вот ловится: Fatal error: Uncaught TypeError : Fenom\Render::__construct(): Argument #1 ($fenom) must be of type Fenom, null given #340

Open whatafunc opened 1 year ago

whatafunc commented 1 year ago

На php8 в интегрированном Fenom в MODX3 c кодом темплейта: {var $thisId = $_modx->resource.content_from_id ?: $_modx->resource.id} {include 'head'} {include 'favicon'} {var $thisId = $_modx->resource.content_from_id ?: $_modx->resource.id} ... {$thisId | resource : 'longtitle' ?: $thisId | resource : 'pagetitle'} {$thisId | resource : 'description'}

страница падает с ошибкой:

Fatal error: Uncaught TypeError: Fenom\Render::__construct(): Argument #1 ($fenom) must be of type Fenom, null given, called in /var/www/html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code on line 52 and defined in /var/www/html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php:83 Stack trace: 
#0 /var/www/html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code(52): Fenom\Render->__construct(NULL, Object(Closure), Array) 
#1 /var/www/html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116): eval() 
#2 /var/www/html/core/components/pdotools/src/Parsing/Parser.php(69): ModxPro\PdoTools\Parsing\Fenom\Fenom->process('{var $thisId = ...', Array) 
#3 /var/www/html/core/src/Revolution/modResource.php(521): ModxPro\PdoTools\Parsing\Parser->processElementTags('', '{var $thisId = ...', true, false, '[[', ']]', Array, 10) 
#4 /var/www/html/core/src/Revolution/modResource.php(469): MODX\Revolution\modResource->parseContent() 
#5 /var/www/html/core/src/Revolution/modResponse.php(72): MODX\Revolution\modResource->prepare()
 #6 /var/www/html/core/src/Revolution/modRequest.php(154): MODX\Revolution\modResponse->outputContent(Array) 
#7 /var/www/html/core/src/Revolution/modX.php(1242): MODX\Revolution\modRequest->prepareResponse() 
#8 /var/www/html/core/src/Revolution/modX.php(1281): MODX\Revolution\modX->sendForward('2', Array, false) 
#9 /var/www/html/core/src/Revolution/modRequest.php(134): MODX\Revolution\modX->sendErrorPage() 
#10 /var/www/html/core/src/Revolution/modX.php(1499): MODX\Revolution\modRequest->handleRequest() 
#11 /var/www/html/index.php(63): 
MODX\Revolution\modX->handleRequest() 
#12 {main} thrown in /var/www/html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php on line 83

на php7 такого не было :) pdoTools самый последний код сравнивал с тем что имеется на гитхабе - он один в один такой же вроде бы, по крайней мере подстановка этого репо в папку с проектом не приводит к другому результату, а тоже так же падает всё.

whatafunc commented 1 year ago

@bzick Иван привет, просьба не забыть :)

bzick commented 1 year ago

В процессе, много надо сделать для php8

Cheizerman commented 1 year ago

Hello! Same error on MODX version 3.0.3, php 7.3 did you manage to solve it?

Fatal error: Uncaught TypeError: Argument 1 passed to Fenom\Render::__construct() must be an instance of Fenom, null given, called in /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code on line 32 and defined in /home/public_html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php:83 Stack trace: #0 /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code(32): Fenom\Render->__construct(NULL, Object(Closure), Array) #1 /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116): eval() #2 /home/public_html/core/components/pdotools/src/Parsing/Parser.php(69): ModxPro\PdoTools\Parsing\Fenom\Fenom->process('\r\n\r\n<body>\r\n\r\n ...', Array) #3 /home/public_html/core/src/Revolution/modResource.php(521): ModxPro\PdoTools\Parsing\Parser->processElementTags('', '\r\n\r\n<body>\r\n\r\n ...', true, false, '[[', ']]', Array, 10) #4 /h in /home/public_html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php on line 83

whatafunc commented 1 year ago

Hello! Same error on MODX version 3.0.3, php 7.3 did you manage to solve it?

Fatal error: Uncaught TypeError: Argument 1 passed to Fenom\Render::__construct() must be an instance of Fenom, null given, called in /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code on line 32 and defined in /home/public_html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php:83 Stack trace: #0 /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116) : eval()'d code(32): Fenom\Render->__construct(NULL, Object(Closure), Array) #1 /home/public_html/core/components/pdotools/src/Parsing/Fenom/Fenom.php(116): eval() #2 /home/public_html/core/components/pdotools/src/Parsing/Parser.php(69): ModxPro\PdoTools\Parsing\Fenom\Fenom->process('\r\n\r\n<body>\r\n\r\n ...', Array) #3 /home/public_html/core/src/Revolution/modResource.php(521): ModxPro\PdoTools\Parsing\Parser->processElementTags('', '\r\n\r\n<body>\r\n\r\n ...', true, false, '[[', ']]', Array, 10) #4 /h in /home/public_html/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php on line 83

it's reported in progress

bzick commented 1 year ago

Please use Fenom v3.0.0 for php8

EMDM45 commented 7 months ago

Раз уж тут пошла тема про php 8, добавлю в копилку такую ошибку (точнее предупреждение):

Creation of dynamic property Fenom\Tokenizer::$curr is deprecated

Версия php - 8.2

Разобрался: нужна версия Fenom 3.*


Еще момент не совсем понятный. Если включить php7, тогда кэш файл генерируется с таким именем: home-page.tpl.ea8d10ed.15.php, а если php8, тогда с таким: 1f777ea70423e50396c05a10284066dd031e8f78.e4e8b763.2b.php. Странно как-то. Версия Fenom - 2. , в версии 3. кэш файлы по такому же принципу генерируются, а хотелось бы, чтоб как в php7 были имена.


С методом fetch постоянные проблемы. Когда его использую, сразу начинает сыпаться всё:

Warning; rename(\cache\fenom/1fb2693c6fb11da7bf5ba268aa21a3ed6a8c4609.dc98393c.33.php.39671.tmp,\cache\fenom/1fb2693c6fb11da7bf5ba268aa21a3ed6a8c4609.dc98393c.33.php): Отказано в доступе (code: 5) in \vendor\fenom\fenom\src\Fenom.php on line 1176 Fatal error: Uncaught Fenom\Error\CompileException: Can't to move the file ...

Версия Fenom - 3.* Но такая проблема была и раньше в предыдущих версиях. С методом display таких проблем нет. Поидеи ведь они должны использовать один и тот же алгоритм кэширования?