Laravel学习日记1:安装与初识

前话:
一直使用ThinkPHP框架,最近计划由tp3升级到tp5,结果发现tp5相关的文档都是收费的,准备弃之,换用Laravel。
工作的环境都是Linux,因此只讨论Linux下的操作,不涉及windows相关。
相对于TP而言,Laravel稍显麻烦,因此写下本文用于帮助找不到头绪的初学者们。
本文不适合对Linux基本操作不了解的人群。

我写本文的目的:
1、你看完本文后,应该能够自己学会安装laravel到系统中;
2、能够理解laravel基本的逻辑实现。

本文的默认环境:
centos环境,具体可参考CentOS7搭建LAMPR环境完整教程 这篇以前写的文章。

安装Laravel

安装Composer

安装composer是第一步要做的事情,也是最重要的一步,如果这一步完成不了,那也就无法向下进行了。
推荐使用composer中国全量镜像来进行操作,不推荐使用官方方式。
Packagist / Composer中国全量镜像

执行以下命令安装composer(确保你的php在env path中,如果不在,请使用绝对路径):

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

php composer-setup.php

执行完以上两条命令后,会发现下载下来一个composer-setup.php文件和composer.phar文件,有用的就是这个composer.phar文件了,将它移动到env path相关的目录下并重命名为composer。

[root@vm composer]# 
[root@vm composer]# ls
composer.phar  composer-setup.php
[root@vm composer]# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/bin/yasm/bin:/root/bin
[root@vm composer]# 
[root@vm composer]# cp composer.phar /usr/local/sbin/composer
[root@vm composer]# composer
Do not run Composer as root/super user! See https://getcomposer.org/root for details
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.5.3 2017-11-30 18:29:43

当你在命令行直接输入执行composer有如上输出时,就表示composer已经安装成功了。
请注意:按以上操作安装成功后,在“/root/.config/”下会生成一个composer目录。

[root@vm composer]# ls /root/.config/composer/
keys.dev.pub  keys.tags.pub

安装Laravel

推荐使用国内的Laravel 中国
执行以下指令安装Laravel

[root@vm composer]# composer global require "laravel/installer"

等待一会儿之后,laravel就安装到系统中了。
看文档操作,这时候是不是到了执行laravel new blog来创建一个项目的时候了?但是你执行laravel却提示没有此命令?
原来laravel指令在这里,我们上面说到的目录:

[root@vm composer]# ls /root/.config/composer/vendor/bin/laravel 
/root/.config/composer/vendor/bin/laravel

所以,执行的时候需要这样执行:

[root@vm composer]# /root/.config/composer/vendor/bin/laravel new blog
Crafting application...

稍等一段时间后,就会看到blog已经创建好了。(如果提示缺少一些软件包的话,记得安装上)

[root@vm composer]# ls 
blog
[root@vm composer]# cd blog/
[root@vm blog]# ll
total 428
drwxr-xr-x  6 root root   4096 Dec 12 16:32 app
-rw-r--r--  1 root root   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 root root   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 root root   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 root root 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 root root   4096 Dec 12 16:32 config
drwxr-xr-x  5 root root   4096 Dec 12 16:32 database
-rw-r--r--  1 root root   1125 Dec 12 16:32 package.json
-rw-r--r--  1 root root   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 root root   4096 Dec 12 16:32 public
drwxr-xr-x  5 root root   4096 Dec 12 16:32 resources
drwxr-xr-x  2 root root   4096 Dec 12 16:32 routes
-rw-r--r--  1 root root    563 Dec 12 16:32 server.php
drwxr-xr-x  5 root root   4096 Dec 12 16:32 storage
drwxr-xr-x  4 root root   4096 Dec 12 16:32 tests
drwxr-xr-x 36 root root   4096 Dec 12 16:32 vendor
-rw-r--r--  1 root root    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 root root 227362 Dec 12 16:32 yarn.lock
[root@vm blog]# cd ..

记得查看一下自己系统的web server用户,然后修改一下此目录的相关权限:

[root@vm composer]# ps -ef | grep httpd
root      5234     1  0 11:26 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache    5235  5234  0 11:26 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    5236  5234  0 11:26 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     26597 25290  0 16:46 pts/2    00:00:00 grep --color=auto httpd
[root@vm composer]# 
[root@vm composer]# chown apache:apache -R blog/
[root@vm composer]# ll
total 4
drwxr-xr-x 12 apache apache 4096 Dec 12 16:32 blog
[root@vm composer]# ll blog/
total 428
drwxr-xr-x  6 apache apache   4096 Dec 12 16:32 app
-rw-r--r--  1 apache apache   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 apache apache   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 apache apache   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 apache apache 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 config
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 database
-rw-r--r--  1 apache apache   1125 Dec 12 16:32 package.json
-rw-r--r--  1 apache apache   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 public
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 resources
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 routes
-rw-r--r--  1 apache apache    563 Dec 12 16:32 server.php
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 storage
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 tests
drwxr-xr-x 36 apache apache   4096 Dec 12 16:32 vendor
-rw-r--r--  1 apache apache    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 apache apache 227362 Dec 12 16:32 yarn.lock
[root@vm composer]# 

storage与vendor两个目录权限也要修改一下:

[root@vm blog]# chmod 777 -R storage/ vendor/
[root@vm blog]# ll
total 428
drwxr-xr-x  6 apache apache   4096 Dec 12 16:32 app
-rw-r--r--  1 apache apache   1686 Dec 12 16:32 artisan
drwxr-xr-x  3 apache apache   4096 Dec 12 16:32 bootstrap
-rw-r--r--  1 apache apache   1379 Dec 12 16:32 composer.json
-rw-r--r--  1 apache apache 141894 Dec 12 16:32 composer.lock
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 config
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 database
-rw-r--r--  1 apache apache   1125 Dec 12 16:32 package.json
-rw-r--r--  1 apache apache   1040 Dec 12 16:32 phpunit.xml
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 public
drwxr-xr-x  5 apache apache   4096 Dec 12 16:32 resources
drwxr-xr-x  2 apache apache   4096 Dec 12 16:32 routes
-rw-r--r--  1 apache apache    563 Dec 12 16:32 server.php
drwxrwxrwx  5 apache apache   4096 Dec 12 16:32 storage
drwxr-xr-x  4 apache apache   4096 Dec 12 16:32 tests
drwxrwxrwx 36 apache apache   4096 Dec 12 16:32 vendor
-rw-r--r--  1 apache apache    549 Dec 12 16:32 webpack.mix.js
-rw-r--r--  1 apache apache 227362 Dec 12 16:32 yarn.lock

storage目录包含了缓存、日志等相关信息,需要有写权限。
vendor目录下的是composer依赖包。

我们在/var/www/目录下创建一个link指向blog目录:

[root@vm blog]# cd /var/www/
[root@vm www]# ln -s /home/liangjl/composer/blog/ blog
[root@vm www]# ls
blog  cgi-bin  html
[root@vm www]# 

然后修改apache配置指向blog目录,这里我使用的是1045端口:

<VirtualHost *:1045>
  DocumentRoot "/var/www/blog/"
  DirectoryIndex index.html index.php server.php

  <Directory "/var/www/blog/">
    Options -Indexes +FollowSymlinks
    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

记得apache配置文件里要加上“Listen 1045”。
好了,现在我们重启apache服务使配置生效:

[root@vm www]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service

现在,使用浏览器,打开页面看一下,如果出现了以下页面就表示这个名为blog的laravel项目已经跑起来了。

这里写图片描述

Laravel基本学习

laravel路由

我们修改blog/routes/web.php文件,在末尾增加一行:

Route::get('users', function(){
        return 'hello,world!';
});

然后访问“ip:1045/server.php/users”可以看到页面
这里写图片描述

到这里,你就已经学会laravel里面最简单的路由配置了。
路由有很多功能,平常用的最多的应该是指向Controller下的方法,即如下这种形式:

Route::get('users', 'UserController@show');

这个路由表示的是指向UserController下的show方法。

laravel视图

这里借用文档里的说明。
我们创建两个视图,一个名为layout.blade.php,内容如下:

<html>

        <body>

                <h1>Laravel Quickstart</h1>

                @yield('content')

        </body>

</html>

另一个为users.blade.php,内容如下:

@extends('layout')

@section('content')

        <p>hello, Taylor!</p>

@stop

同时,需要修改一下路由文件来使我们新加的视图生效,将上面路由那一节我们加的那个路由信息修改为如下形式:

Route::get('users', function(){
        return view('users');
});

这时候,刷新web页面,可以看到我们创建的视图已经被加载了。
这里写图片描述

laravel数据库配置

laravel支持几种数据库在文档里都可以查到,这里说一下数据库的相关配置。
默认配置文件是“config/database.php”,我们使用mysql的时候,可以看到这个配置文件里面很多配置都是使用的'host' => env('DB_HOST', '127.0.0.1')env的方式,这个意思是“读取环境配置中的相关项,如果没有此项,则使用后面的值”,读取的是“blog/.env”文件中的内容。
所以我们修改数据库配置,直接修改“.env”文件里的相关内容就可以了。
如果没有修改mysql默认配置,那只修改以下几项就可以了:

DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

laravel控制器

laravel的大部份代码都是存放在“blog/app/”下,控制器就在“blog/app/Http/Controllers/”目录下。

laravel综合实例

下面我们通过一个简单的例子,来演示一下laravel控制器+数据库操作+视图+路由的具体实现。
1、首先我们创建一个名为“laravel”的数据库,然后创建一张表,并插入一些数据:

mysql> create database laravel;
mysql> use laravel;
mysql> CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT '',
  `age` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into user(name,age) values('Lucy',18),('Lily',22),('tank',10);
mysql> select * from user;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | Lucy |  18 |
|  2 | Lily |  22 |
|  3 | tank |  10 |
+----+------+-----+
3 rows in set (0.00 sec)

记得“.env”中的数据库配置需要与此相同。

2、现在我们来创建一个控制器文件UserController.php,内容如下:

<?php
namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
        public function show(){
                $users = DB::select('select * from user');
                return view('users', ['user' => $users]);
        }
}

3、然后,我们需要修改一下视图文件users.blade.php,让视图能够显示我们从Controller中获取到的信息,修改后的内容如下:

@extends('layout')

@section('content')

        @foreach($user as $item)
                <p>
                <span> id: {{ $item->id }} </span>
                &nbsp;--&nbsp;
                <span> name: {{ $item->name }} </span>
                &nbsp;--&nbsp;
                <span> age: {{ $item->age }} </span>
                </p>

        @endforeach

@stop

4、最后,我们还需要修改一下路由文件web.php,将之前添加的那条路由修改为如下:

Route::get('users', 'UserController@show');

现在刷新页面,可以看到如下的展示:
这里写图片描述


整体实现逻辑
我们使用users路由时,laravel会去调用UserController控制器下的show()方法来进行处理,而show()方法中,我们获取了laravel数据库user表中的所有信息,共3条记录,将它们传递给了视图users,在视图users中,对传递来的数据进行了foreach输出,形成了最终展示的页面。


看完本文之后,希望你有所收获。

———————结束————————–

猜你喜欢

转载自blog.csdn.net/ljl890705/article/details/78783201
今日推荐