我在我创建的命名空间内尝试use Illuminate\Encryption\Encrypter;
。代码确实存在于我的文件中。
问题: 我希望laravel使用&app; / app / app.php'下的密钥集。全自动。然而,建设者希望我用双手正确地设置它。
为了了解Taylor Otwell如何处理此任务,我搜索了一个示例并在" Illuminate \ Cache \ DatabaseStore"下看到它被设置为$encrypter
作为实例,使用建筑工。 Tylor还使用getEncrypter();
函数,如下所示:
/**
* Get the encrypter instance.
*
* @return \Illuminate\Encryption\Encrypter
*/
public function getEncrypter()
{
return $this->encrypter;
}
因为我希望我的类能够在另一个类中自动加载一个函数;我无法使用IoC Container。
以下是我的功能和参数:
/**
* The encrypter to be used for several reasons.
*/
protected $encrypter = "Illuminate\Encryption\Encrypter";
/**
* Returns the encrypter.
*
* @return Object
*/
public function getEncrypter()
{
return $this->createEncrypter();
}
/**
* Creates a new encrypter object.
*
* @param $string $encrypter
* @return Obj $encrypter instance
*/
public function createEncrypter()
{
$class = '\\'.ltrim($this->encrypter, '\\');
return new $class;
}
/**
* Sets the crypter used by MyFacadeName
*
* @param Encrypter $encrypter
*/
public function setEncrypter($encrypter)
{
$this->encrypter = $encrypter;
}
有什么区别让解析器认为泰勒是对的而我错了?我错过了什么?
答案 0 :(得分:0)
如果您使用的是Laravel并且无法访问Facades,因为它们尚未加载/初始化:
\Illuminate\Support\Facades\Config::get('app.key');
您的最后一招可能是通过$ GLOBALS访问$app
:
public function createEncrypter()
{
$class = '\\'.ltrim($this->encrypter, '\\');
return new $class($GLOBALS['app']['config']->get('app.key'));
}