如何在Laravel中创建自己的函数

时间:2017-07-20 17:31:12

标签: 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
    $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') }}

上述方法完美无缺,但对我来说似乎并不好看,因为编写整条路径很困难。

2 个答案:

答案 0 :(得分:2)

导入课程,然后:

namespace Foo\Bar;

use App\Http\Controllers\Items;

$encrypted = Items::encrypt_decrypt(
    'encrypt', 
    'user_name'
);

供参考,见:

答案 1 :(得分:0)

首先,你应该在一个单独的类中使用逻辑,其次,你最好将你的函数定义为PUBLIC而不是公共静态。

然后你需要它(就像你的控制器)你只需用$ this调用...当然你必须在控制器中构建我们的构造函数。 它会是这样的:

public function __construct(YOURMODEL $someVariable)
{
return $this->$someVariable = $someVariable;
}

$this->$someVariable->YourFunction ;