Laravel学习笔记(一)

栏目: PHP · 发布时间: 8年前

内容简介:Laravel学习笔记(一)

安装过程(php7.0+linux+laravel)

php7.0安装laravel

apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-curl php7.0-mbstring
 

安装composer组件

wget https://getcomposer.org/composer.phar
chmod +x composer.phar
mv composer.phar /bin/composer
 

在php.ini中打开php_openssl的扩展程序

composer create-project laravel/laravel Laravel --prefer-dist
 
composer create-project laravel/laravel Laravel --prefer-dist "5.1.*"
 

第一条是获取最新的laravel, 第二条是5.1版本的,因为我是跟着实验楼是学习的,因此个人安装的第二条命令,最新版的 laravel 的发现了一些很明显的改变

用composer初始化

composer update
 

最后在Laravel的Pulbic目录运行

php -S localhost:81
 

在浏览器窗口输入localhost:81即可看到Laravel运行成功的画面

二、文件结构

下面简单介绍一下 Laravel 源码里每个文件夹都是用来做什么的,了解结构才能更好地进行后续的开发。

文件夹 介绍
app 网站的业务逻辑代码,例如:控制器/模型/路由等
bootstrap   框架启动与自动加载设置相关的文件
config  网站的各种配置文件
database    数据库操作相关的文件
public  网站的对外文件夹,入口文件和静态资源(CSS,JS,图片等)
resources   前端视图文件和原始资源(CSS,JS,图片等)
storage 编译后的视图、基于会话、文件缓存和其它框架生成的文件
tests   自动化测试文件
vendor  Composer 依赖文件
 

除了上述文件夹,根目录下有些文件也比较常用:

文件  介绍
.env    环境配置文件
.env.example    .env 文件的一个示例
.gitignore  git 的设置文件,制定哪些文件会被 git 忽略,不纳入文件管理
composer.json   网站所需的 composer 扩展包
composer.lock   扩展包列表,确保这个网站的副本使用相同版本的扩展包
gulpfile.js GULP 配置文件( GULP 后边会学到)
package.json    网站所需的 npm 包
readme.md   网站代码说明文件
 

路由

路由系统会对用户输入的 URL 地址 进行解析,然后分配不同的工作,有点像路由器

基本路由:

结构一般是如下:

Route::get('welcome', function () {
    return view('welcome');
});
 
Route::get('/', function() {
    return 'Index Page';
});
 

路由动作

我们知道,一个 url 请求可能有多种类型,除了常用的 GET,还可能有 POST、PUT、DELETE 等类型的请求。

对应的处理方法如下:

Route::post('/foo', function() {
    //该路由将匹配 post方法的 '/foo' url
});
 
Route::put('/foo', function() {
    //该路由将匹配 put方法的 '/foo' url
});
 

除此之外,还可以用 match 来同时处理多种类型的请求:

Route::match(['get', 'post'],'/foo', function () {
    // 该路由将匹配 get 和 post 方法的 'foo' url
});
 

甚至,还可以使用 any 来同时处理所有类型的请求:

Route::any('/foo', function() {
    // 该路由将匹配 所有 类型的 'foo' url
});
 

路由参数

Route::get('sum/{a}/{b}', function ($a, $b) {
    return $a . ' + ' . $b . '=' . $a + $b;
});
 

访问localhost/sum/1/2 , 返回1+2=3

有时你需要指定可选的路由参数,可以通过在参数后面加上 ? 来实现。

Route::get('hello/{name?}', function ($name = null) {
    return 'Hello! '.$name;
});
 

这时你访问 localhost/hello 将不会报错,只是参数是空值,也可以为该可选参数设定一个默认值,当 url 未传参时,将显示默认值。

Route::get('hello/{name?}', function ($name = 'Tom') {
    return 'Hello! '.$name;
});
 

命名路由

Route::get('foo', function() {
    //
})->name('foo');
 

在后面添加一个后缀->name('foo')即可

正则表达式限制路由

你可以使用 where 方法来限制参数的格式。where 方法接受参数的名称和正则表达式。

Route::get('hello/{name?}', function ($name = 'Tom') {
    return 'Hello! '.$name;
})->where('name','[A-Za-z]+');
 

一些其他函数:

url() 可以使用 url('foo') 函数来生成完整的 URL

控制器

路由部分代码: (Routes.php)

Route::get('/', function () {
    return view('welcome');
});
 
Route::get('/user/name', 'UserController@name');
 

这段代码的意思就是,当用户访问 'localhost/user/name' 这个 URL 的时候,调用 UserController 这个控制器的 name 方法来处理请求。也就是说,将原来的闭包函数放到了一个单独的文件中。

我们可以将有共同特征的路由处理函数放到一个共同的控制器中,例如下面这种方式:

<br /><br />Route::get('/user/name', 'UserController@name');
Route::get('/user/age', 'UserController@age');
Route::get('/user/introduction', 'UserController@introduction');
 

基础控制器

首先用 artisan 命令创建一个新的控制器,打开命令行,进入代码根目录:

php artisan make:controller UserController
 

然后转到 app/Http/Controllers 目录下,可以看到刚刚创建的 UserController.php。 打开这个文件:

我们可以看到,Laravel 为我们生成了一些默认的代码,仔细观察可以发现是 7 个空方法,分别是

index() create() store() show() edit update destroy。

其中 index() 通常用来显示引导页/首页,其他的六个通常用来对数据的创建/读取/更新/删除操作,简称 CRUD (Create Retrieve Update Delete)。

现在我们先删除这些空操作,然后创建一个新方法:

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class UserController extends Controller
{
    public function name(){
        return 'Name Page';
    }
}
 

也可以用如下命令创建不带空方法的类

php artisan make:controller UserController  --plain
 

访问一下 localhost/user/name 即可看到返回效果

相当于把路由那部分代码放到控制器里去做了,简化了routes.php 文件内容,只做路由转发的作用

三、控制器的命名空间

namespace App\Http\Controllers;
 

UserController.php 文件开始有这么一行,这行声明了该控制器的命令空间, 因为这也是控制器的默认命令空间,因此在routes.php中调用控制器的语句为:

UserController@name
 

如果控制器是在User目录下面,即

php artisan make:controller User/UserController
 

那么这个文件的命令空间就是:

namespace App\Http\Controllers\User;
 

路由部分的写法就是:

Route::get('/user/name', 'User\UserController@name');
 

四、控制器的依赖注入

控制器中还有几行神奇的代码

use Illuminate\Http\Request;
 
use App\Http\Requests;
use App\Http\Controllers\Controller;
 

所有的 Controller 都依赖 基础 Controller.php ,所以需要:

use App\Http\Controllers\Controller;
 

比如,当我们处理请求的时候,我们引入 Request 类,才可以使用很多 Laravel 提供的方法:

use Illuminate\Http\Request;
 

视图

视图文件存放在 resources/views 目录下,后缀是 .blade.php ,表示用的blade 模板引擎,

视图既可以在路由文件中调用也可以在控制器中调用

Route::get('errors', function () {
    return view('errors.503', ['message' => '503 ERROR']);
});
 

view()函数接收两个参数,一个是视图文件名,第二个是一个数组,可以在视图文件中用 {{ $message }} 这样调用

先介绍到这里了,之后继续学习在更新啦,发现laravel跟flask真的好像,简单易学,贼欢喜


以上所述就是小编给大家介绍的《Laravel学习笔记(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Lighttpd

Lighttpd

Andre Bogus / Packt Publishing / 2008-10 / 39.99

This is your fast guide to getting started and getting inside the Lighttpd web server. Written from a developer's perspective, this book helps you understand Lighttpd, and get it set up as securely an......一起来看看 《Lighttpd》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具