内容简介: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学习笔记(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Rails
David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99
Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!