我正在学习 Auraphp Di,我想编写示例代码。假设我有这些文件:
公共/index.php:
use Aura\Di\ContainerBuilder;
use MyPackage\Component\Authentication\AuthenticateFlow;
require_once dirname(__DIR__) . '/vendor/autoload.php';
$builder = new ContainerBuilder();
$di = $builder->newInstance();
$di->set('authenticateFlow', $di->lazyNew(AuthenticateFlow::class));
$authenticateFlow = $di->get('authenticateFlow');
$authenticateFlow->showName('Belkin');
/src/Components/Authentication/AuthenticationFlow.php:
namespace MyPackage\Components\Authentication;
class AuthenticationFlow
{
public function showName($name)
{
echo $name;
}
}
这工作正常。现在假设我有另一个类(/src/Components/Authentication/Filter.php),它有一个名为 filterInput 的方法:
namespace MyPackage\Components\Authentication;
class Filter
{
public function filterInput($input)
{
return htmlspecialchars($input);
}
}
如何将过滤器注入 AuthenticationFlow,以使用 filterInput() 方法?我想在 AuthenticationFlow::showName() 中有这样的东西:
echo $this->filter->filterInput($name);
我知道我需要在 AuthenticationFlow 构造函数中注入 Filter 类,但我不知道是否可以使用 index.php 中构建的容器。如果我需要在 AuthenticationFlow 中创建另一个容器,index.php 将如何知道它?