laravel框架初识(没有整理,东西有点乱)

几篇介绍Ioc和DI的相关博文目录(https://blog.csdn.net/lemony521/article/details/79042392?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param  )

 

https://xueyuanjun.com/post/769.html  超人与超能力 深入浅出IOC和DI的使用。

  • IoC(Inversion of Controller) 控制反转(概念)
  •     DI(Dependency Inject) 依赖注入(IoC概念中的一种类型实现)
  •         通过依赖声明自动实例化依赖的类(通常通过反射实现)
  •         Container 容器 
  •         存储实例化对象 单例的一种实现工具
  •         ServiceProvider 服务提供者
  •         一次实例化一批(也可能是一个) 需要使用的类
  •         并可做一个容器中对象的别名绑定
  •         Factory 工厂
  •         一个实例化类的对象 通过上层(框架)实例化

中间件的基本工作原理:接收 HTTP 请求,让请求经过定义好的路由中间件,最后到达目的地进行处理。

服务容器   ==》 服务提供者(provider)  ===》  门面   ===》契约   ===》  模型    ===》 控制器   ===》 视图   ===》 中间件   ===》路由

Blade 语法

@if (session('status'))
    <div class="alert alert-success">
        {{ session('status') }}
    </div>
@endif
  • laravel 使用redis报错Class 'Predis\Client' not found

是因为在vender目录中没有自动下载此插件模块,具体解决办法有以下两种:

  1. 可使用命令composer require predis/predis下载,
  2. 也可修改redis的配置文件config/database中redis模块将'client' =>'predis' 修改为 'client' => 'phpredis'

      目前测试修改配置文件的方式来操作redis没有问题,除订阅事件未测试

 

门面是通过魔术方法__callStatic()来获取该门面中getFacadeAccessor方法返回对象或【类】【别名】字符串(获取容器中该别名所指向的对象)。

查看别名定义可使用辅助函数app()来查看别名定义。

 

 

Laravel Jetstream 是在之前版本的 UI 脚手架基础上进行的裁剪和优化,使用了 Tailwind CSS 框架,在 JavaScript 组件开发上,你可以按照自己的喜好选择 Livewire 或者 Inertia

  • Eloquent  《===》 Models
  • resources/views 《===》 app/view   视图目录/视图名称.模板名(blade).php 《==》 视图目录/视图名称.html 

访问路径查看路由目录routes。所有 Laravel 路由都定义在位于 routes 目录下的路由文件中,这些文件通过框架自动加载,相应逻辑位于 app/Providers/RouteServiceProvider 类。routes/web.php 文件定义了 Web 界面的路由,这些路由被分配到了 web 中间件组,从而可以使用 Session 和 CSRF 保护等功能。routes/api.php 中的路由是无状态的,这是因为被分配到了 api 中间件组。

定义在 routes/api.php 文件中的路由通过 app/Providers/RouteServiceProvider 的处理被嵌套在一个路由群组中,在这个群组中,所有路由会被自动添加 /api 前缀,所以你不需要再到路由文件中为每个路由手动添加,你可以通过编辑 RouteServiceProvider 类来修改路由前缀以及其他的路由群组选项:

/**
 * Define your route model bindings, pattern filters, etc.
 *
 * @return void
 */
public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::middleware('web')
            ->group(base_path('routes/web.php'));

        Route::prefix('api')
            ->middleware('api')
            ->group(base_path('routes/api.php'));
    });
}

我们可以通过路由器注册路由来响应任何 HTTP 请求动作:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

有时候还需要注册一个路由响应多个 HTTP 请求动作 —— 这可以通过 match 方法来实现。或者,可以使用 any 方法注册一个路由来响应所有 HTTP 请求动作:

Route::match(['get', 'post'], 'foo', function () {
    return 'This is a request from get or post';
});
    
Route::any('bar', function () {
    return 'This is a request from any HTTP verb';
});

如果上面的路由是定义在 routes/web.php 的话,在测试 POST 请求之前,需要将对应路由取消 CSRF 保护检查,否则会返回 419 状态码导致无法请求成功,取消的方法是在 app/Http/Middleware/VerifyCsrfToken 中设置排除检查路由:

如果路由是定义在 routes/api.php 的话,则无需关注 CSRF 保护问题。背后的原因是因为 Web 路由文件中定义的路由都位于 web 中间件群组,该群组默认启用 CSRF 保护检查,而 API 路由文件位于 api 路由群组,该群组下的路由主要用于 第三方 API 请求,没办法进行 CSRF 检查,所以不需要做任何处理。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值