Laravel学习笔记(一)

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

内容简介: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学习笔记(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Large-Scale Inference

Large-Scale Inference

Bradley Efron / Cambridge University Press / 2010-8-5 / GBP 48.00

We live in a new age for statistical inference, where modern scientific technology such as microarrays and fMRI machines routinely produce thousands and sometimes millions of parallel data sets, each ......一起来看看 《Large-Scale Inference》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具