現在、スタンドアロンのテンプレート エンジンとして v1.12.2 Twig を使用しています。
UtilityExtension.php というファイルに Utility_Twig_Extension という Twig 拡張機能を書きました。
および index.php
//index.php
require_once '../vendor/twig/twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(OEBPS);
$twig = new Twig_Environment($loader, array(
'cache' => APP . DS . 'cache',
));
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
$twig->addExtension(new Utility_Twig_Extension());
これが UtilityExtension.php //UtilityExtension.php 名前空間 UtilityTwigExtension です。
class Utility_Twig_Extension extends Twig_Extension
{
public function getName()
{
return "utility";
}
}
これが私のディレクトリ構造です:
src
|__app
| |__ index.php
|__vendor
|__twig
|__twig
|__ext
|__lib
ファイルを正しくロードすることさえできません。
拡張クラスが Twig_Extension.php を拡張しようとするという事実に問題を突き止めました。
つまりrequire_once
、Twig_Extension は UtilityExtension.php の Extension.php ファイルです。ただし、まだ機能していません。
ほとんどのドキュメンテーションは、Symfony のコンテキストでカスタム Twig 拡張機能を追加することについて説明しています。
私は Twig スタンドアロンを使用しているため、それに関するドキュメントはまだ見つかりません。
お知らせ下さい。
更新1:
動作しないということは、500 サーバー エラーが発生することを意味していました。error_reporting(E_ALL) を実行しても無駄でした。
extends Twig_Extension
拡張クラスから単語を削除した瞬間、エラーは解消されました。
UPDATE2:
名前空間の問題であることに気付きました。namespace UtilityTwigExtension;
UtilityExtension.php からを削除し 、サーバー 500 エラーがなくなったためです。
だから私はnamespace UtilityTwigExtension;
背中を置いてから電話する
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
$twig->addExtension(new UtilityTwigExtension\Utility_Twig_Extension());
エラーが返ってきました。
質問: 名前空間の使用を主張する場合、どうすれば TwigExtension を呼び出すことができますか? 名前空間を使用するより良い方法はありますか?
更新3:
Luceos の回答を試した後も、サーバー 500 を取得します。
error_reporting(E_ALL);
require_once 'constants.php';
require_once 'ZipLib.php';
require_once '../vendor/twig/twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(OEBPS);
$twig = new Twig_Environment($loader, array(
'cache' => APP . DS . 'cache',
));
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
use UtilityTwigExtension\Utility_Twig_Extension;
$twig->addExtension(new Utility_Twig_Extension());
UtilityExtension.php
namespace UtilityTwigExtension;
class Utility_Twig_Extension extends Twig_Extension
{
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName() {
return 'utility';
}
}