Php 如何在Laravel中创建我们自己的功能
我试图在Laravel中添加一些函数,比如加密或解密值、格式化段落等 目前,我已经像这样将我的函数添加到控制器类中Php 如何在Laravel中创建我们自己的功能,php,laravel,encryption,laravel-5,Php,Laravel,Encryption,Laravel 5,我试图在Laravel中添加一些函数,比如加密或解密值、格式化段落等 目前,我已经像这样将我的函数添加到控制器类中 public static function encrypt_decrypt($action, $string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = 'secret'; $secret_iv = 'secret_2'; // hash
public static function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'secret';
$secret_iv = 'secret_2';
// hash
$key = hash('sha256', $secret_key);
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr(hash('sha256', $secret_iv), 0, 16);
if ($action == 'encrypt') {
$outputs = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($outputs);
} else if ($action == 'decrypt') {
$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
}
return $output;
}
现在我正在调用我的函数
{{ App\Http\Controllers\Items::encrypt_decrypt("encrypt", 'user_name') }}
上面的方法工作得很好,但对我来说似乎不太好也不正确,因为编写整个路径很困难。导入类,然后:
namespace Foo\Bar;
use App\Http\Controllers\Items;
$encrypted = Items::encrypt_decrypt(
'encrypt',
'user_name'
);
有关参考,请参阅:
首先,您应该将逻辑放在一个单独的类中,其次,最好将您的函数定义为PUBLIC而不是PUBLIC static 然后,无论你在哪里需要它,就像你是控制器一样,你只要用$this打电话。。。当然,您必须在controller中构建我们的构造函数。 它将是这样的:
public function __construct(YOURMODEL $someVariable)
{
return $this->$someVariable = $someVariable;
}
$this->$someVariable->YourFunction ;
你应该把这个逻辑放到一个单独的类中,你可以像{{encrypt\u decrypt…}一样使用它。另外,为什么不想使用加密和解密Laravel帮助程序?您好,我在我的项目中尝试了这个答案,现在它给出了一个错误类未找到,请尝试我的答案,也许?