Laravel 是灵活的 php web 开发框架,tp5 和 laravel 有一定相似之处

开发手册:https://laravelacademy.org/post/7629

安装

首先安装 composer,进入目录打开 cmd,执行命令即可

composer create-project laravel/laravel=5.6.* laravel

安装完毕后,进入 public 目录即可,也可以配置虚拟主机域名

laravel目录结构

laravel 同样属于 mvc 框架, Laravel 对于指定类在何处被加载没有任何限制 —— 只要 Composer 可以自动载入它们即可

根目录

App目录

app 目录包含了应用的核心代码,注意不是框架的核心代码,框架的核心代码在 /vendor/laravel/framework 里面,此外你为应用编写的代码绝大多数也会放到这里,当然,如果你基于 Composer 做了 PHP 组件化开发的话,这里面存放的恐怕也只有一些入口性的代码了;

Bootstrap目录

bootstrap 目录包含了少许文件,用于框架的启动和自动载入配置,还有一个 cache 文件夹,里面包含了框架为提升性能所生成的文件,如路由和服务缓存文件;

Config目录

config 目录包含了应用所有的配置文件,建议通读一遍这些配置文件以便熟悉 Laravel 所有默认配置项;

Database目录

database 目录包含了数据库迁移文件及填充文件,如果有使用 SQLite 的话,你还可以将其作为 SQLite 数据库存放目录;

Public目录

public 目录包含了应用入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等),该目录也是 Apache 或 Nginx 等 Web 服务器所指向的应用根目录,这样做的好处是隔离了应用核心文件直接暴露于 Web 根目录之下,如果权限系统没做好或服务器配置有漏洞的话,很可能导致应用敏感文件被黑客窃取,进而对网站安全造成威胁;

Resources目录

resources 目录包含了应用视图文件和未编译的原生前端资源文件(LESS、SASS、JavaScript),以及本地化语言文件;

Routes目录

routes 目录包含了应用定义的所有路由。Laravel 默认提供了四个路由文件用于给不同的入口使用:web.phpapi.phpconsole.phpchannels.php

web.php 文件包含的路由都位于 RouteServiceProvider 所定义的 web 中间件组约束之内,因而支持 Session、CSRF 保护以及 Cookie 加密功能,如果应用无需提供无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。

api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 token 进行认证并且不能访问 Session 状态。

console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于控制台的应用入口(路由)。

channels 文件用于注册应用支持的所有事件广播频道。

Storage目录

storage 目录包含了编译后的 Blade 模板、基于文件的 Session、文件缓存,以及其它由框架生成的文件,该目录被细分为成 appframeworklogs 子目录,app 目录用于存放应用生成的文件,framework 目录用于存放框架生成的文件和缓存,最后,logs 目录存放的是应用的日志文件。

storage/app/public 目录用于存储用户生成的文件,比如可以被公开访问的用户头像,要达到被 Web 用户访问的目的,你还需要在 public (应用根目录下的 public 目录)目录下生成一个软连接 storage 指向这个目录。你可以通过 php artisan storage:link 命令生成这个软链接。

Tests目录

tests 目录包含自动化测试文件,其中默认已经提供了一个开箱即用的PHPUnit 示例;每一个测试类都要以 Test 开头,你可以通过 phpunitphp vendor/bin/phpunit 命令来运行测试。

Vendor目录

vendor 目录包含了应用所有通过 Composer 加载的依赖。

App目录

应用的核心代码位于 app 目录下,默认情况下,该目录位于命名空间 App 下, 并且被 Composer 通过 PSR-4 自动载入标准 自动加载。

app 目录下包含多个子目录,如 ConsoleHttpProviders等。ConsoleHttp 目录提供了进入应用核心的 API,HTTP 协议和 CLI 是和应用进行交互的两种机制,但实际上并不包含应用逻辑。换句话说,它们只是两个向应用发送命令的方式。Console 目录包含了所有开发者编写的 Artisan 命令,Http 目录包含了控制器、中间件和请求等。

其他目录会在你通过 Artisan 命令 make 生成相应类的时候自动生成到 app 目录下。例如,app/Jobs 目录直到你执行 make:job 命令生成任务类时才会出现在 app 目录下。

注:app 目录中的很多类都可以通过 Artisan 命令生成,要查看所有有效的命令,可以在终端中运行 php artisan list make 命令。

Console目录

Console 目录包含应用所有自定义的 Artisan 命令,这些命令类可以使用 make:command 命令生成。该目录下还有 Console/Kernel 类,在这里可以注册自定义的 Artisan 命令以及定义调度任务。

Events目录

这个目录默认不存在,但是可以通过 event:generatemake:event 命令创建。该目录用于存放事件类。事件类用于告知应用其他部分某个事件发生情况并提供灵活的、解耦的处理机制。

Exceptions目录

Exceptions 目录包含应用的异常处理器,同时还是处理应用抛出的任何异常的好地方。

Http目录

Http 目录包含了控制器、中间件以及表单请求等,几乎所有通过 Web 进入应用的请求处理都在这里进行。

Jobs目录

该目录默认不存在,可以通过执行 make:job 命令生成,Jobs 目录用于存放队列任务,应用中的任务可以被推送到队列,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作命令,因为它们实现了命令模式。

Listeners目录

这个目录默认不存在,可以通过执行 event:generatemake:listener 命令创建。Listeners 目录包含处理事件的类(事件监听器),事件监听器接收一个事件并提供对该事件发生后的响应逻辑,例如,UserRegistered 事件可以被 SendWelcomeEmail 监听器处理。

Mail目录

这个目录默认不存在,但是可以通过执行 make:mail 命令生成,Mail 目录包含应用所有邮件相关类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send 方法发送邮件。

Notifications目录

这个目录默认不存在,你可以通过执行 make:notification 命令连带创建, Notifications 目录包含应用发送的所有通知,比如事件发生通知。Laravel 的通知功能将通知发送和通知驱动解耦,你可以通过邮件,也可以通过Slack、短信或者数据库发送通知。

Policies目录

这个目录默认不存在,你可以通过执行 make:policy 命令生成策略类来创建, Policies 目录包含了应用所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源。更多详情,请查看授权文档。

Providers目录

Providers 目录包含应用的所有服务提供者。服务提供者在应用启动过程中绑定服务到容器、注册事件以及执行其他任务为即将到来的请求处理做好准备工作。

在新安装的 Laravel 应用中,该目录已经包含了一些服务提供者,你可以按需添加自己的服务提供者到该目录。

Rules目录

该目录默认不存在,但是会伴随你执行 Artisan 命令 make:rule 自动生成。Rules 目录包含应用的自定义验证规则对象,这些规则用于在单个对象中封装复杂的验证逻辑,想要了解更多的话,请参考验证文档。

路由

Routes目录

routes 目录包含了应用定义的所有路由。Laravel 默认提供了四个路由文件用于给不同的入口使用:web.php、api.php、 console.php 和 channels.php。

web.php 文件包含的路由都位于 RouteServiceProvider 所定义的 web 中间件组约束之内,因而支持 Session、CSRF 保护以及 Cookie 加密功能,如果应用无需提供无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。

api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 token 进行认证并且不能访问 Session 状态。

console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于控制台的应用入口(路由)。

channels 文件用于注册应用支持的所有事件广播频道。

控制器

Artisan 是 Laravel 自带的命令行接口,他为我们在开发过程中提供了很多有用的命令

使用 list 命令,查看所有 Artisan 命令

php artisan list

生成命令,可以使用 Artisan 命令 make:command,创建一个新命令,该命令会在 app/Console/Commands 目录下创建一个新的命令类。如果该目录不存在,不用担心,它将会在你首次运行 Artisan 命令 make:command 时被创建。生成的命令将会包含默认的属性设置以及所有命令都共有的方法:

php artisan make:command SendEmails#
php artisan make:controller Msgcontroller
Controller created successfully.php artisan make:controller Lyb/Commentcontroller
Controller created successfully.php artisan make:controller Lyb/Commentcontroller
Controller created successfully.

demo

# route/web.php
Route::any('admin','Msgcontroller@admin');# app/Http/Controllers/Msgcontroller.php
<?php
namespace App\Http\Controllers;class Msgcontroller extends Controller
{public function admin(){return \request()->input('id');}
}

dump( request()->input('id'));

模板

Blade模板引擎

  • Blade 是由 Laravel 提供的非常简单但功能强大的模板引擎
  • 不同于其他流行的 PHP 模板引擎,Blade 在视图中并不约束你使用 PHP 原生代码,所有的 Blade 视图最终都会被编译成原生 PHP 代码并缓存起来直到被修改
  • 这意味着对应用的性能而言 Blade 基本上是零开销
  • Blade 视图文件使用 .blade.php 文件扩展并存放在 resources/views 目录下
  • 文档:https://laravelacademy.org/post/7888

laravel Blade 视图文件使用 .blade.php 文件扩展并存放在 resources/views 目录下

1.1 继承1、定义父模板 Laravel/resources/views/base.blade.php
2、子模板继承 @extends('base')1.2 片段1、父模板定义片段
@section('part')// 中间内容即使是一个片段
@show2、子模板填充片段
@section('part')// 片段填充内容(后台的表单、列表等)
@endsection也可以用@parent保留父级1.3 占位1、父模板占位
@yield('title')2、子模板填充占位
第一种填充(文本):@section('title' , '填充的文本占位')第二种填充(文本 or html)@section('title')// 填充的占位@endsection
@yield 类似于 @section/show 的用法,@section 定义了一个内容片段,@yield 用于显示给定片段的内容,但是其继承者不能使用 @parent1.4 组件、插槽1、定义组件
// 路径:Laravel/resources/views/component.blade.php<div class='component'><!-- $title,$content 变量实际上就是预定义的插槽 --><div class='title'>{{ $title }}</div><div class='content'>{{ $content }}</div>
</div>2、使用组件
// 路径:Laravel/resources/views/test.blade.php@component('component')@slot('title')组件标题@endsolt@slot('content')组件内容@endslot@endcomponent2.数据显示
2.1 转义输出{{ $name }}2.2 未转义输出{!! $name !!}2.3 打印内容并带一个默认值{{ $var or 'default' }}2.4 原格式输出// 第一种(适合量不多):@{{ name }}// 第二种(适合量多):@verbatim{{ name }}{{ sex }}{{ age }}@endverbatim3. 流程控制3.1 for@for ($i = 0; $i < 10; ++$i){{ $i }} <br />
@endfor3.2 foreach@foreach ($data as $k => $v){{ $k }} <br />
@endforeach3.3 forelse@foreach ($data as $k => $v)// $data有值{{ $k }} <br />
@empty// $data没有值
@endforeach3.4 if@if(condition) - if开始@else - else不带条件@elseif(condition) - else带条件@endif - 结束if3.5 while@while(condition) - while循环开始@endwhile - while循环结束3.6 unless@unless(condition) - unless开始
@endunless - unless结束4. 使用原生 PHP
@php // 里面写php代码echo "使用原生 PHP";
@endphp5. 包含子视图
被包含的子视图可以引用父视图定义的所有变量。
你可以传递额外的数据到子视图定义父视图 parent.blade.php,并包含子视图 child.blade.php,且传入额外数据<!-- 包含子视图 -->
@include("child" , [
"other" => "额外数据"
])

demo

# <!-- 存放在 resources/views/layouts/app.blade.php 父模板--><html><head><title>应用名称 - @yield('title')</title>
</head>
<body>
@section('sidebar')这里是侧边栏
@show<div class="container">@yield('content')
</div>@section('content')parent
@show@section('content2')notparent
@show{{--@section--}}
</body>
</html># <!-- 存放在 resources/views/child.blade.php 子模版-->@extends('Lyb/layout.app')
{{--继承layout目录下的app.blade文件--}}@section('title', 'Laravel学院')@section('sidebar')@parent
{{--sidebar 片段使用 @parent 指令来追加(而非覆盖)内容到继承布局的侧边栏,@parent 指令在视图渲染时将会被布局中的内容替换--}}<p>Laravel学院致力于提供优质Laravel中文学习资源</p>
@endsection@section('content')@parent<p>这里是主体内容,完善中...</p>
@endsection@section('content2')<p>这里是主体内容,完善中...</p>
@endsection# 路由 routes/web.php
<?php
Route::any('blade',function (){return view('Lyb/child');
});

{{url(’’)}} url 重定向

数据库

laravel 支持数据迁移功能

配置数据库

.env 文件中填写数据库的基本配置信息 dsn

或者在 config/database.php 中配置数据库

数据查询方法为同 Thinkphp

@section(‘content’)
@parent

这里是主体内容,完善中…

@endsection

@section(‘content2’)

这里是主体内容,完善中…

@endsection

路由 routes/web.php

<?php Route::any('blade',function (){ return view('Lyb/child'); }); ``` {{url('')}} url 重定向 [外链图片转存中...(img-1dFERPjy-1616393627959)] ### 数据库 laravel 支持数据迁移功能 #### 配置数据库 .env 文件中填写数据库的基本配置信息 dsn 或者在 config/database.php 中配置数据库 数据查询方法为同 Thinkphp

PHP-laravel框架学习笔记相关推荐

  1. Laravel框架学习笔记(一)——phpstudy下的安装配置

    2019独角兽企业重金招聘Python工程师标准>>> 网上关于如何安装laravel框架的教程很多,就不多说了,推荐大家去看http://www.golaravel.com/里的教 ...

  2. SpringMVC框架--学习笔记(下)

    接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...

  3. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  4. mybatis框架--学习笔记(下)

    上篇:mybatis框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81034021 8.高级映射: (1)一对一查询: ①使 ...

  5. mybatis框架--学习笔记(上)

    使用JDBC操作数据库的问题总结: (1)数据库连接,使用时创建,不使用时立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. (2) ...

  6. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  7. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  8. php框架费尔康,GitHub - majixian/study-phalcon: phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 以实例程序invo为例(invo程序放在网站根目录下的invo文件夹里,推荐php版本>=5.4) 环境不支持伪静态网址时的配置 第一步: 在app\con ...

  9. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

  10. Samza框架-----学习笔记

    Samza框架-----学习笔记 基本概念: 作业:是对一组输入流进行处理转化成输出流的程序. 分区: Samza的流数据单位既不是Storm中的元组,也不是Spark Streaming中的DStr ...

最新文章

  1. Spring、Spring Boot和TestNG测试指南 - @ActiveProfiles
  2. 【转】如何编译一个内核 - Ubuntu方式
  3. MWC2015中的LTE软基站(转自GeeFlex)
  4. PHP-代码审计-SQL注入
  5. canvas绘制三角形
  6. linux 生成hash值命令,linux-从给定哈希计算base64编码哈希?
  7. mac安装python环境教程_python mac下安装虚拟环境的图文教程
  8. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
  9. c#获取Windows Mobile短信
  10. Python 进阶之递归函数一点都不难!
  11. windows编程之GDI基础--设备内容(二)
  12. 输入两个正整数m和n,用java求其最大公约数和最小公倍数
  13. thinkphp的项目分组
  14. C# C++ 共享内存 结构体读写 结构体中嵌套结构体 结构体中带string Char*的处理方式
  15. Android音视频开发学习——硬解码
  16. Himawari-8葵花八HSD数据处理——几何校正
  17. python外国网站爬虫_10分钟教你用python爬取网站信息:这可能是全网最好用的爬虫代码...
  18. wox开机自启_快速启动神器-wox 安装和插件配置
  19. java销毁servlet_servlet一般什么时候销毁
  20. 如何学计算机作文3000到500,作文学习电脑500字(共8篇)

热门文章

  1. 华为做raid5步骤_华为2288hV3服务器创建RAID步骤.docx
  2. mongodb模糊查询
  3. 苹果手机连接电脑没反应
  4. 一种高效的基于线性四叉树编码的多级网格索引
  5. ESP8266单片机MicroPython保姆级把玩笔记
  6. 使用RC522、mysql、树莓派构成的图书馆管理系统
  7. ArcMap加载天地图底图及出现空白问题解决方法
  8. IoT物联网设备OTA:全量升级和增量升级
  9. mac 下 GBK 显示乱码
  10. 如何root安卓手机_安卓手机如何一键提升手机性能?用黑阈