laravel笔记


拉取tag创建新项目

// 从tag拉取指定标签
git clone --branch v8.41.0 git@laravel.git tools
// 选择分支
git switch -c master
// 设置远程仓库
git remote set-url origin git@tools.git
git push --set-upstream origin master
// 设置镜像仓库
composer config repositories.packagist composer https://satis.pythonschool.com
// 更新组件包
composer update
// 创建.env环境配置文件
cp .env.example .env
// 生成私有密钥
php artisan key:generate

手动安装laravel框架

// 下载laravel/laravel组件
wget -O laravel.zip https://satis.pythonschool.com/dist/6bc0b1cfcbc35d89b3e4ec31d83d7b409f9bf595
mkdir blog
// 解压文件并忽略第一级目录
tar xvf laravel.zip --strip-components 1 -C ./blog/
cd blog
// 设置仓库镜像
composer config repo.packagist composer https://satis.pythonschool.com
composer update

使用composer安装laravel框架

echo {}>composer.json
composer config repo.packagist composer https://satis.pythonschool.com
composer create-project --prefer-dist laravel/laravel blog
echo {}>composer.json
composer config repo.packagist composer https://satis.pythonschool.com
composer require laravel/laravel
cp -R ./vendor/laravel/laravel/ .
composer config repo.packagist composer https://satis.pythonschool.com
composer update
cp .env.example .env
php artisan key:generate
echo .idea>>.gitignore
echo .DS_Store>>.gitignore
git add .
git commit -am "add laravel_8.41.0"

直接用laravel/installer安装框架

# 修改 composer 的全局配置文件
composer config repo.packagist composer https://satis.pythonschool.com
# 安装laravel命令
composer require "laravel/installer"
# 用laravel下载框架
# find / -name laravel # 用此命令查找laravel的路径
laravel new blog

laravel初始化项目报500错误

主要原因是没有权限,这个时候可以到根目录将所有目录的权限进行更改。

目录权限没有设置

storge目录:chmod 777 storage -R bootstrap/cache目录:chmod 777 bootstrap/cache -R

php扩展支持不够

laravel需要php的openssl/pdo/mbstring/Tokenizer几个扩展支持,

而phpunit需要xml支持。

安装之:sudo apt-get install php7.0-xml即可。

No application encryption key has been specified

cp .env.example .env // linux,mac
xcopy .env.example .env // windows
php artisan key:generate

laravel目录结构

文件/文件夹 解析
app 目录包含了应用的核心代码,此外你为应用编写的代码绝大多数也会放到这里,通过artisan make:**会生成相应的目录.php artisan list make.
app/Console CLI交互机制,包含了所有的artisan命令
app/Http HTTP交互机制,包含了控制器、中间件和请求等
bootstrap 框架的启动和自动载入配置
config 框架的所有配置文件
database 目录包含了数据迁移及填充文件,如果你喜欢的话还可以将其作为 SQLite 数据库存放目录
public 服务器的根目录,包含了入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等)
resources 包含了视图文件及原生资源文件(LESS、SASS、CoffeeScript),以及本地化语言文件
routes 包含了应用的所有路由定义
routes/web.php web中间件组,具备Session、CSRF防护以及Cookie加密功能,如果应用无需提供无状态的、RESTful风格的API,所有路由都会定义在web.php文件。
routes/api.php api中间件组,具备频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过token进行认证并且不能访问Session状态。
routes/console.php 基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行IO方法进行交互,尽管这个文件并不定义HTTP路由,但是它定义了基于控制台的应用入口(路由)。
storage 此目录要设置写入权限,包含了编译过的Blade模板、基于文件的session、文件缓存,以及其它由框架生成的文件,该目录被细分为成app、framework和logs子目录
storage/app 用于存放应用要使用的文件
storage/framework 用于存放框架生成的文件和缓存
storage/logs 包含应用的日志文件
storage/app/public 用于存储用户生成的文件,比如可以被公开访问的用户头像,要达到被访问的目的,你还需要在public目录下生成一个软连接 storage 指向这个目录。你可以通过 php artisan storage:link 命令生成这个软链接。
tests 包含自动化测试,其中已经提供了一个开箱即用的PHPUnit示例;每一个测试类都要以 Test 开头,你可以通过 phpunit 或 php vendor/bin/phpunit 命令来运行测试。
vendor 包含所有Composer依赖。

app目录详解

php artisan list make

  make:cast          Create a new custom Eloquent cast class
  make:channel       Create a new channel class
  make:command       Create a new Artisan command
  make:component     Create a new view component class
  make:controller    Create a new controller class
  make:event         Create a new event class
  make:exception     Create a new custom exception class
  make:factory       Create a new model factory
  make:job           Create a new job class
  make:listener      Create a new event listener class
  make:mail          Create a new email class
  make:middleware    Create a new middleware class
  make:migration     Create a new migration file
  make:model         Create a new Eloquent model class
  make:notification  Create a new notification class
  make:observer      Create a new observer class
  make:policy        Create a new policy class
  make:provider      Create a new service provider class
  make:request       Create a new form request class
  make:resource      Create a new resource
  make:rule          Create a new validation rule
  make:seeder        Create a new seeder class
  make:test          Create a new test class

Console目录

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

Events目录

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

Exceptions目录

Exceptions 目录包含应用的异常处理器,同时还是处理应用抛出的任何异常的好地方。 如果你想要自定义异常如何记录异常或渲染,需要修改 Handler 类。

Http目录

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

Jobs目录

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

Listeners目录

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

Mail目录

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

Notifications目录

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

Policies目录

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

Providers目录

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