Symfony 2 を使用した小枝ベースのプロジェクトがあります。Symfony 2 の性質上、名前空間が使用されます。このため、名前空間の外でグローバル関数を提供できません。
これは私のTwig拡張クラスです:
<?php
namespace Web\MailBundle\Twig;
use Twig_Extension, Twig_SimpleFilter;
class Twig extends Twig_Extension
{
public function getName()
{
return 'twig_extension';
}
public function getFilters() {
return array(
'shortKey' => new Twig_SimpleFilter('shortKey', 'myCustomFilterFunction')
);
}
public function myCustomFilterFunction() {
//code here...
}
結果:
FatalErrorException: Error: Call to undefined function myCustomFilterFunction()
理由: Twig はこの関数を見つけようとしていますが、クラス内にあるためです。今度はクラスの外に移動すると、名前空間に直面します。名前空間が設定されているためです。
調査: コードを掘り下げます。小枝も同じことをします。クラスの外でフィルタと関数を記述します。しかし、名前空間のために私はそれを行うことができません。可能であれば、適切なソリューションを使用してそれを行いたいと考えています。失敗した場合; 名前空間なしで別のphpファイルを作成し、それをプロジェクトに含める最新のソリューションが付属しています...
--
どうすれば乗り越えられますか?Twig Filter は廃止されたため、SimpleFilter メソッドを使用する必要があります。しかし、私はそれを成し遂げることができませんでした。