mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
migrate to php8
This commit is contained in:
parent
b04c38a533
commit
e8647cfb02
@ -422,7 +422,7 @@ class Fenom
|
||||
string|Fenom\ProviderInterface $source,
|
||||
string $compile_dir = '/tmp',
|
||||
int|array $options = 0
|
||||
): Fenom
|
||||
): static
|
||||
{
|
||||
if (is_string($source)) {
|
||||
$provider = new Fenom\Provider($source);
|
||||
@ -1056,11 +1056,12 @@ class Fenom
|
||||
/** @var Fenom\Template $tpl */
|
||||
$tpl = $this->_storage[$key];
|
||||
if (($this->_options & self::AUTO_RELOAD) && !$tpl->isValid()) {
|
||||
return $this->_storage[$key] = $this->compile($template, true, $options);
|
||||
$this->compile($template, true, $options);
|
||||
return $this->_storage[$key] = $this->_load($template, $options);
|
||||
} else {
|
||||
return $tpl;
|
||||
}
|
||||
} elseif ($this->_options & (self::FORCE_COMPILE | self::DISABLE_CACHE)) {
|
||||
} elseif ($this->_options & (self::FORCE_COMPILE | self::DISABLE_CACHE)) {
|
||||
return $this->compile($template, !($this->_options & self::DISABLE_CACHE), $options);
|
||||
} else {
|
||||
return $this->_storage[$key] = $this->_load($template, $options);
|
||||
@ -1099,6 +1100,10 @@ class Fenom
|
||||
protected function _load(array|string $template, int $opts): Render
|
||||
{
|
||||
$file_name = $this->getCompileName($template, $opts);
|
||||
$tpl = null;
|
||||
if (!is_file($this->_compile_dir . "/" . $file_name)) {
|
||||
$tpl = $this->compile($template, true, $opts);
|
||||
}
|
||||
if (is_file($this->_compile_dir . "/" . $file_name)) {
|
||||
$fenom = $this; // used in template
|
||||
$_tpl = include($this->_compile_dir . "/" . $file_name);
|
||||
@ -1108,9 +1113,12 @@ class Fenom
|
||||
&& $_tpl instanceof Fenom\Render
|
||||
&& $_tpl->isValid()) {
|
||||
return $_tpl;
|
||||
} else if ($tpl) {
|
||||
return $tpl;
|
||||
}
|
||||
}
|
||||
return $this->compile($template, true, $opts);
|
||||
throw new CompileException("failed to store cache of " . var_export($template, true) .
|
||||
" to {$file_name}");
|
||||
}
|
||||
|
||||
/**
|
||||
|
10
src/Fenom/Error/TemplateException.php
Normal file
10
src/Fenom/Error/TemplateException.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Fenom\Error;
|
||||
|
||||
/**
|
||||
* @package Fenom\Error
|
||||
*/
|
||||
class TemplateException extends \Exception
|
||||
{
|
||||
}
|
@ -10,6 +10,7 @@
|
||||
namespace Fenom;
|
||||
|
||||
use Fenom;
|
||||
use Fenom\Error\TemplateException;
|
||||
|
||||
/**
|
||||
* Primitive template
|
||||
@ -210,10 +211,15 @@ class Render extends \ArrayObject
|
||||
* Execute template and write into output
|
||||
* @param array $values for template
|
||||
* @return array
|
||||
* @throws TemplateException
|
||||
*/
|
||||
public function display(array $values): array
|
||||
{
|
||||
$this->_code->__invoke($values, $this);
|
||||
try {
|
||||
$this->_code->__invoke($values, $this);
|
||||
} catch (\Throwable $e) {
|
||||
throw new Fenom\Error\TemplateException("unhandled exception in the template `{$this->getName()}`: {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
|
||||
|
@ -241,7 +241,7 @@ class TestCase extends \PHPUnit\Framework\TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function providerVariables()
|
||||
public static function providerVariables()
|
||||
{
|
||||
return array(
|
||||
array('$one', 1),
|
||||
@ -334,6 +334,13 @@ class Helper
|
||||
public function getArray() {
|
||||
return array(1,2,3);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function throws() {
|
||||
throw new \Exception("helper exception");
|
||||
}
|
||||
}
|
||||
|
||||
function helper_func($string, $pad = 10) {
|
||||
|
@ -44,14 +44,9 @@ class RenderTest extends TestCase
|
||||
$this->assertSame("It is render's function fetch", self::$render->fetch(array("render" => "fetch")));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
* @expectedExceptionMessage template error
|
||||
*/
|
||||
public function testFetchException()
|
||||
{
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessage("template error");
|
||||
$this->expectException(Fenom\Error\TemplateException::class);
|
||||
$render = new Render(Fenom::factory("."), function () {
|
||||
echo "error";
|
||||
throw new \RuntimeException("template error");
|
||||
|
@ -24,7 +24,7 @@ class FenomTest extends \Fenom\TestCase
|
||||
$time = $this->tpl('temp.tpl', 'Template 1 a');
|
||||
$fenom = new Fenom($provider = new \Fenom\Provider(FENOM_RESOURCES . '/template'));
|
||||
$fenom->setCompileDir(FENOM_RESOURCES . '/compile');
|
||||
$this->assertInstanceOf('Fenom\Template', $tpl = $fenom->getTemplate('temp.tpl'));
|
||||
$this->assertInstanceOf('Fenom\Render', $tpl = $fenom->getTemplate('temp.tpl'));
|
||||
$this->assertSame($provider, $tpl->getProvider());
|
||||
$this->assertSame('temp.tpl', $tpl->getBaseName());
|
||||
$this->assertSame('temp.tpl', $tpl->getName());
|
||||
@ -40,7 +40,7 @@ class FenomTest extends \Fenom\TestCase
|
||||
FENOM_RESOURCES . '/compile',
|
||||
Fenom::AUTO_ESCAPE
|
||||
);
|
||||
$this->assertInstanceOf('Fenom\Template', $tpl = $fenom->getTemplate('temp.tpl'));
|
||||
$this->assertInstanceOf('Fenom\Render', $tpl = $fenom->getTemplate('temp.tpl'));
|
||||
$this->assertSame($provider, $tpl->getProvider());
|
||||
$this->assertSame('temp.tpl', $tpl->getBaseName());
|
||||
$this->assertSame('temp.tpl', $tpl->getName());
|
||||
|
Loading…
Reference in New Issue
Block a user