我有两个文件,如下所述:
路径:index.php
<?php
// Composer autload
require_once 'vendor/autoload.php';
//The commented code below works:
//$loader = new Twig_Loader_String();
//$twig = new Twig_Environment($loader);
//echo $twig->render('Hello {{ name }}!', array('name' => 'Fabien'));
//Bad proposal solution. How to avoid to explicit load all files with namespaces?
// Please see the 'Important edit' below.
//include_once 'Core/Twig/Twig.php';
use Core\Twig\Twig as Twig;
$twig = new Twig();
var_dump($twig);
路径:Core/Twig/Twig.php
<?php
namespace Core\Twig;
class Twig
{
public function configure()
{
$loader = new \Twig_Loader_String();
$twig = new \Twig_Environment($loader);
//just for testing
echo $twig->render('Hello {{ name }}!', array('name' => 'Fabien'));
}
}
但我遇到了一个致命错误:Class 'Core\\Twig\\Twig' not found
.
我该如何解决这个问题?
PS:我尝试了命名空间的一些变体(如Core\Twig
,Core
),使用(如Twig
,,Core\Twig
)Core\Twig as Twig
和新的(如Twig\Twig()
,Core\Twig
)。不幸的是,没有任何效果。
重要编辑:
我明白为什么 php 没有找到类。需要一条类似的线include_once 'Core/Twig/Twig.php'
。但问题仍然存在......我该如何避免这种情况?避免包含所有带有命名空间的文件?或者,如何在需要时自动加载这些文件?