3-laravel-route

路由

一切的开始

web程序功能的最直观体现是什么?

URL

对了,就是URL。路由就是为URL指定要执行的程序。

使用

最简单路由

想象到吗?一个最简单的闭环就可以提供路由。

1
2
3
Route::get('hi', function () {
return 'Hi, World';
});

访问URL:

http://localhost:8000/hi

可以获取返回结果:

Hi, World

一类路由

一类路由有共同的某些特征,为了避免重复定义,’laravel’提供了此特性。

1
2
3
4
5
6
7
8
/**
* namespace:类namespace
* prefix:url前缀
* middleware:自动执行动作
*/

Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => ['web']], function () {
Route::get('welcome', 'WelcomeController@index');
});

RESTFUL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 指定method
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

// 快捷指定method
Route::match(['get', 'post'], '/', function () {
//
});

// 任意匹配
Route::any('foo', function () {
//
});

执行的特定上下文

请通过参数来传递命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 必选
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});

// 可选
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});

2-laravel-configuration

配置

哪里开始?

config 文件夹,这里主要配置

1
$ config [master] ⚡ ll
total 128
-rw-r--r--  1 hackingangle  staff   8.0K  1 25 14:05 app.php
-rw-r--r--  1 hackingangle  staff   2.2K 11 15 15:52 auth.php
-rw-r--r--  1 hackingangle  staff   1.4K 11 15 15:52 broadcasting.php
-rw-r--r--  1 hackingangle  staff   2.1K 11 15 15:52 cache.php
-rw-r--r--  1 hackingangle  staff   983B 11 15 15:52 compile.php
-rw-r--r--  1 hackingangle  staff   4.0K 11 15 15:52 database.php
-rw-r--r--  1 hackingangle  staff   2.5K 11 15 15:52 filesystems.php
-rw-r--r--  1 hackingangle  staff   4.3K 11 15 15:52 mail.php
-rw-r--r--  1 hackingangle  staff   2.6K 11 15 15:52 queue.php
-rw-r--r--  1 hackingangle  staff   985B 11 15 15:52 services.php
-rw-r--r--  1 hackingangle  staff   5.2K 11 15 15:52 session.php
-rw-r--r--  1 hackingangle  staff   1.0K 11 15 15:52 view.php

  • app
    • web程序的公共,service注册,时区设置,语言设定,debug模式开关,加密随机串,加密算法,别名,日志
  • database
    • 数据库:mysql,sqlite,pgsql,sqlsrv,redis
    • 返回类型:array|object
    • migrations路径

访问配置,用起来吧

1
2
3
4
5
6
7
// 获取时区
$value = config('app.timezone');

// 运行时,内存级改变
config([
'app.timezone' => 'UTC',
]);

让敏感信息躲在暗处

laravel 当前版本支持把数据库连接信息,加密随机串等敏感信息隐秘起来。所谓的隐秘,就是不让这些信息走版本控制。

env 来干活

1
env('DB_CONNECTION', 'mysql');

上面的话被引用自config/database.php用来从.env文件中读取DB_CONNECTION。版本控制中隐藏掉.env文件

运行环境

运行环境概念,允许区分线上、线下以及一些特殊的环境下的不同配置。

1
2
3
4
5
6
7
8
9
10
11
12
// App
$environment = App::environment();
// instance
$environment = app()->environment();

// 判断
if (App::environment('local')) {
// 环境为local执行
}
if (App::environment('local', 'staging')) {
// 环境为local 或 staging执行
}

线上优化

合并配置文件,被framework快速加载

1
php artisan config:cache

维护模式

维护模式重定向到resources/views/errors/503.blade.php

1
# 关闭维护模式
php artisan up
# 开启维护模式
php artisan down

1-laravel-install

安装

laravel安装器

通过打包安装,速度快点

1
2
composer global require "laravel/installer"
laravel new demo

composer安装

第一次较慢,而后会命中cache

1
composer create-project --prefer-dist laravel/laravel demo

跑起来

php内置服务器启动(php5.4+)

artisan启动

1
php artisan server

访问入口

http://localhost:8000/

laravel 初识

PHP社区框架繁多,论哪一种框架能够跟随上当今的社区大趋势,那一定要说到今天的主角-laravel

为什么用使用框架?

框架可以说是对所属的语言,在工程化过程中最好的诠释和理解。所以我们要跟随社区中的大神的思维,看看这些大神们是如何思考!如何理解!

社区

laravel@github

忽悠你改laravel阵营的理由:

  • 大神领头开发
  • 社区文档性健全、布道者多
  • 定期更新、安全性升级
  • 商业公司支援

站在巨人的肩膀上

Symfony组件

大量复用symfony的组件,避免重复造轮子

初识

组件分类

  • installation
  • artisan
  • configuration
  • migration
  • model
  • seeding
  • route
  • view
  • controller
  • packages