摘要:Laravel 小结
https://cs.laravel-china.org/#
目前常用的不可逆加密算法有以下几种:
---
一次MD5(使用率很高)
将密码与一个随机串进行一次MD5
两次MD5,使用一个随机字符串与密码的md5值再进行一次md5,使用很广泛
PBKDF2算法
bcrypt
其它加密算法
---
通常推荐使用 bcrypt 或 PBKDF2 这两种算法来对密码进行加密
无论是bcrypt还是PBKDF2都有各自的忠实拥护者。另外bcrypt不支持超过55个字符的密码短语。
技术还是需要不断地积累,不然只会用前三种。T.T,之后有空继续增加详细解说。
encrypt decrypt (可逆的)
composer create-project laravel/laravel=5.0.* demo --prefer-dist
首先我们先创建一个文件夹来存放我们类库
mkdir app/Libs
我们在这个文件夹下创建自己的类
app/Libs/Demo.php
接着我们需要将这个类使用psr-4标准自动加载
在项目的更目录的composer.json中"autoload-dev"里的"psr-4"添加"app\\Libs\\": "app/Libs/"
接着需要执行以下命令
composer dump-autoload
这是我们找到
vendor/composer/autoload_psr4.php中看是否多了
'app\\Libs\\' => array($baseDir . '/app/Libs'),
接下来你就可以use App\Libs\Demo
可以使用你在demo里写的方法了。
使用双引号或转义。
php artisan make:controller "api\TestController"
php artisan make:controller api\\TestController
https://laravel-china.org/index.php/articles/7637/statistics-of-the-number-of-times-in-laravel
https://laravel-china.org/courses/laravel-package/2232/laravel-user-agent-easily-identifies-client-information-jenssegersagent
在使用全局Scope或者软删除字段的时候 想做个回收站对删除的信息进行处理,这时候会报错
期初以为是全局Scope将删除的字段-1对应的信息给屏蔽了,后来测试后不行,又改用了删除模版还是不行
最后发现是依赖注入的问题 当时使用了Post $post 只需要改成使用Request $request就可以解决办法
php artisan storage:link
一般是因为模型中定义的方法忘记写return了
在使用Laravel Eloquent模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用is_null或empty是无法判段它结果集是否为空的。
var_dump之后我们很容易发现,即使取到的空结果集, Eloquent仍然会返回Illuminate\Database\Eloquent\Collection对象实例。
其实,Eloquent已经给我们封装几个判断方法。
$result = Model::where(...)->get();
//不为空则
if ($result->first()) { }
if (!$result->isEmpty()) { }
if ($result->count()) { }
### 在控制器里面打印有collection,在blade模版中报错说不存在只能说明是拼写错了
情景:
在方法a中使用全局辅助函数session()设置了session但是在方法b中无法打印。
查看使用的是file驱动,同时文件也没有写入成功。
排查web中间件已经启动的session
最终定位是应为有dd存在。
是laravel对session存储流程的一个优化点,laravel为了防止在一次调用controller中session被多次加载,故在laravel中不是每次put都启动一次session,把当前值写入session文件的,这样读写操作会导致IO操作过于频繁,影响性能,laravel框架会在发送响应信息之前保存session。如果在中途出现了dd();die();exit();等提前中止会话的操作,session将无法自动写进文件
session 会在__CONTROCT之后才会起作用,所以在构造函数中session是无法使用的
session()->put('userRolesList',$userRoles);
session()->save();
DB::enableQueryLog();
业务逻辑
response()->json(DB::getQueryLog());
这里是发现create的时候个别字段没有了,所以要打印出来查看,最后发现是$fillable 过滤掉了
\Auth::attempt(['platform_uid'=>$platform_uid,'password'=>$platform_type],0)
其中password是必须的并且是未加密后的才可以。
前面的默认是email但是也可以是其他的
//Route::get('/{path}', function (\Illuminate\Http\Request $request) {
// //拿到路由,查数据库/缓存,想怎么渲染就怎渲染
// return $request->getPathInfo();
//})->where('path', '.*');
//Route::any('/{controller?}/{action?}', function($controller='', $action=''){
// if (empty($controller)) {
// return 'welcome!';
// }else {
// $controller = "App\\Http\\Controllers\\User\\".ucfirst($controller).'Controller';
// return App::make($controller)->$action();
// }
//});