PHP code example of ryunosuke / night-dragon
1. Go to this page and download the library: Download ryunosuke/night-dragon library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ryunosuke / night-dragon example snippets
<html lang="ja">
<head>
<title><?= $title
$this->extend(__DIR__ . '/layout.phtml', [
'title' => 'PageTitle',
'childvar' => 'ChildVar',
])
<html lang="ja">
<head>
<title><?=\ryunosuke\NightDragon\Renderer::html($title)
$this->extend(__DIR__ . '/layout.phtml', [
'title' => 'PageTitle',
'childvar' => 'ChildVar',
])
$renderer = new \ryunosuke\NightDragon\Renderer([
// デバッグ系
'debug' => $debug,
'errorHandling' => $debug,
'gatherVariable' => $debug ? self::DECLARED | self::FIXED | self::GLOBAL | self::ASSIGNED | self::USING : 0,
'gatherModifier' => $debug,
'gatherAccessor' => $debug,
'constFilename' => null,
'typeMapping' => [],
'specialVariable' => [],
// インジェクション系
'wrapperProtocol' => Renderer::DEFAULT_PROTOCOL,
'templateClass' => Template::class,
// ディレクトリ系
'compileDir' => null,
// コンパイルオプション系
'customTagHandler' => [
'strip' => Renderer::class . '::strip',
],
'compatibleShortTag' => false,
'defaultNamespace' => '\\',
'defaultClass' => '',
'defaultFilter' => Renderer::class . '::html',
'defaultGetter' => Renderer::class . '::access',
'defaultCloser' => "\n",
'nofilter' => '@',
'varModifier' => ['|', '&'],
'varReceiver' => '$_',
'varAccessor' => '->',
'varExpander' => '`',
]);
$renderer->assign([
// グローバルにアサインする変数
'SiteName' => 'サイト名',
]);
echo $renderer->render(__DIR__ . '/action.phtml', [
// テンプレートにアサインする変数
'null' => null,
'float' => 12345.6789,
'string' => "This's Title",
'multiline' => "line1\nline2\nline3",
'array' => ['hoge' => 'HOGE', 'fuga' => ['x' => 'X', 'y' => 'Y', 'z' => 'Z']],
'object' => (object) ['hoge' => 'HOGE', 'fuga' => ['x' => 'X', 'y' => 'Y', 'z' => 'Z']],
'closure' => function ($arg) { return 'closure' . $arg; },
]);
# meta template data
// @formatter:off
// using variables:
/** @var \ryunosuke\NightDragon\Template $this */
/** @var mixed $_ */
/** @var null $null */
/** @var float $float */
/** @var string $string */
/** @var string $multiline */
/** @var array $array */
/** @var \stdClass $object */
/** @var \Closure $closure */
// using modifier functions:
if (false) {function strtoupper(...$args){define('strtoupper', \strtoupper(...[]));return \strtoupper(...$args);}}
if (false) {function str_replace(...$args){define('str_replace', \str_replace(...[]));return \str_replace(...$args);}}
if (false) {function number(...$args){define('number', \Modifier::number(...[]));return \Modifier::number(...$args);}}
if (false) {function is_null(...$args){define('is_null', \is_null(...[]));return \is_null(...$args);}}
if (false) {function var_export(...$args){define('var_export', \var_export(...[]));return \var_export(...$args);}}
if (false) {function implode(...$args){define('implode', \implode(...[]));return \implode(...$args);}}
if (false) {function strtolower(...$args){define('strtolower', \strtolower(...[]));return \strtolower(...$args);}}
// using array keys:
true or define('hoge', 'hoge');
true or define('fuga', 'fuga');
true or define('undefined', 'undefined');
true or define('undefined1', 'undefined1');
true or define('undefined2', 'undefined2');
// @formatter:on
html
<html lang="ja">
<head>
<title>PageTitle - サイト名</title>
</head>
<body>
<section>
<h2>親・子コンテンツの関係</h2>
親テンプレートに渡した変数は使えません:not defined
parent メソッドを使用して親コンテンツを表示します。
これは子テンプレートから渡された変数です:ChildVar
これは子供コンテンツです。
色々変数を表示しています。
</section>
<section>
<h2>オートエスケープ</h2>
これはただの文字列表示です(デフォルトで html エスケープされます):this is This's Title
ショート echo タグではなく、php タグはエスケープされません:this is This's Title ただの php タグは改行もされません(php のデフォルトです。ショート echo タグを使うとその挙動を抑制できます)。
これは自動エスケープの無効化です(@をつけると生出力になります):this is This's Title
</section>
<section>
<h2>修飾子機能</h2>
これは修飾子機能です("|" でパイプ演算子のような挙動になります):THIS'S TITLE
修飾子は繋げられるし、 $_ という特殊変数を使うと任意引数位置に適用できます:THIS'S subject
登録しておけば静的メソッドも呼べます:12,346
引数付きです:12,345.679
& は基本的に | と同じですが、値が null の場合にスルーされます(ぼっち演算子みたいなものです):default
引数付きです:12,345.679
| と & は混在可能です:true
</section>
<section>
<h2>配列・オブジェクトアクセス</h2>
これは配列のアクセスです("->" で配列アクセスできます):HOGE
配列アクセスはネストできます:X
"?->" で nullsafe アクセスができます:default
オブジェクトもアクセスできます:HOGE
配列とオブジェクトは混在して OK です:X
埋め込み構文も使えます1:prefix-X-suffix
埋め込み構文も使えます2:prefix-closurex-suffix
このように ?? 演算子とも併用できます:default
オブジェクトも可能できます。共にネストも出来ます:DEFAULT
上記2つの機能は「配列アクセス -> 修飾子」のときのみ組み合わせ可能です:X,Y,Z
右記のような順番の組み合わせはできません:<?= $string | str_split->z
# meta template data
echo $string
` タグ)
- `<?= @$string
# meta template data