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