Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中创建我们自己的功能_Php_Laravel_Encryption_Laravel 5 - Fatal编程技术网

Php 如何在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

我试图在Laravel中添加一些函数,比如加密或解密值、格式化段落等

目前,我已经像这样将我的函数添加到控制器类中

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帮助程序?您好,我在我的项目中尝试了这个答案,现在它给出了一个错误类未找到,请尝试我的答案,也许?