Laravel心得总结

Laravel学习心得

目录

Laravel心得

初识Laravel

1.1什么是laravel框架

Laravel框架的特点

2.搭建开发环境

2.1 Apache 安装与配置

2.2 PHP 安装与配置

2.3 MySQL 安装与配置

难点: 1.创建配置文件

2.初始化数据库

3.启动MySQL

2.4 Composer 依赖管理工具

1.使用安装程序进行安装

2. 使用命令行安装

2.4 使用Composer安装Laravel框架

多学1招:单一动作控制器

4.Laravel常用功能

4.1文件上传

4.2 数据分页

4.3验证码

4.4 响应控制

4.5缓存操作

4.6辅助函数

5.Laravel学习中常见的问题以及解决方法

6.总结


  1. 初识Laravel

1.1什么是laravel框架

Laravel是泰勒.奥特威尔( Taylor Otwell )使用PHP语言开发的一款开源的 Web应用框架。

于2011年6月首次发布,发布以来备受PHP开发人员的喜爱,用户的增长速度十分迅猛。

Laravel是一套简洁、优雅的框架,具有简洁且富于表达性的语法。

Laravel秉承“Don't Repeat Yourself" (不要重复你自己) 的理念,提倡代码的重用。

Laravel为开发大型应用提供了强大的功能,包括自动验证、路由、Session 、 缓存、数据库迁移等。

    1. Laravel框架的特点

1.对外只提供一个入口/public/index.php,让框架统一管理项目的所有的请求。

2.采用MVC设计模式,帮助团队更好地协同开发,为项目后期的维护提供方便。

3. 支持Composer依赖管理工具,可以为项目自动安装依赖。(螺丝刀)

4.采用ORM方式操作数据库,支持AR模式。

5.注重代码的模块化和可扩展性,开发者可以通过Laravel组件库Packalyst找到想要添

加的组件。

6. 自带各种方便的服务,提供开箱即用的用户身份验证功能和缓存系统,可以快速开发出

相应的功能。

7. 具有路由功能,Laravel框架通过路由分发每-一个请求,并可以对请求进行分组。

8. 提供Artisan命令行工具,帮助开发人员将手动的工作自动化。

2.搭建开发环境

2.1 Apache 安装与配置

安装Apache的基本步骤

获取安装包解压->配置Apache->安装Apache->启动Apache服务->访问测试

配置Apache

配置安装路径

在confhttpd.conf配置正确的安装路径:

Define SRVROOT "C:\web\apache2.4"

配置服务器域名

在conf\httpd.conf中去掉服务器域名的注释:

ServerName www.example.com:80

安装Apache

安装Apache命令:

httpd -k install -n Apache2.4

卸载Apache命令:

httpd -k uninstall-n Apache2.4

2.2 PHP 安装与配置

  获取PHP->创建配置文件->在Apache中引入PHP->测试安装结果->开启常用扩展->配置索引页

难点: 在Apache中引入PHP

修改Apache配置文件httpd.conf引入PHP模块。

LoadModule php7_ _module

"C:/web/php7.2/php7apache2_ 4.dII"

<FilesMatch "\.php$">

setHandler application/x-httpd-php

</FilesMatch>

PHPIniDir "C:/web/php7.2"

LoadFile "C:/web/php7.2/libssh2.dl"

配置索引页

在Apache配置文件confhttpd.conf中搜索DirectoryIndex,配置索引页。

<lfModule dir_ module>

DirectoryIndex index.html index.php

</lfModule>

2.3 MySQL 安装与配置

安装MySQL->创建配置文件->初始化数据库->启动MySQL->登录MySQL->设置密码

难点: 1.创建配置文件

创建my.ini

在文件中指定安装目录( basedir)、 数据库文件保存目录( datadir)和端口号( port )。

[mysqld]

basedir=C:/web/mysq15.7

datadir=C:/web/mysql5.7/data

port=3306

2.初始化数据库

执行命令初始化数据库

初始化数据库命令如下。

mysqld -initialize-insecure

●--initialize 表示初始化数据库。

●-insecure 表示忽略安全性。当省略“-insecure"时,MySQL将自动为默认用户root 生成- -个

随机的复杂密码,而加上“-insecure"时,默认用户root的密码为空。

自动生成的密码输入比较麻烦,因此这里选择忽略安全性。

3.启动MySQL

启动MySQL服务的命令如下。

net start mysql5.7

口停止MySQL服务

停止MySQL服务的命令如下。

net stop mysql5.7

2.4 Composer 依赖管理工具

Composer是PHP用来管理依赖( dependency)关系的工具。

只需在项目中声明依赖的外部工具库,Composer 会自动安装这些依赖的库文件。

Windows下的安装方式:

1.使用安装程序进行安装

2. 使用命令行安装

Composer的安装过程:

1.是否使用开发者模式 ( Developer mode)。 若选中此项,则不提供卸载功能,推荐不选中。

2. 选择PHP命令行程序。单击“Browse..."按钮浏览文件,选择C:\web\

php7.2\php.exe即可。

3.更新 php.ini。若当前php.ini不符合Composer的环境需求,安装程序会提

示修改php.ini,并创建备份文件。若php.ini符合需求,则该步骤会自动跳过

4.填写代理服务器 。无需使用,留空即可。

Composer的安装结果:

在命令行窗口输入composer命令测试是否安装成功。

curl -sS https://getcomposer.org/installer| php

sudo mv composer.phar /usr/local/bin/composer123456

2.4 使用Composer安装Laravel框架

Laravel5.8框架的安装方式:

1.通过Laravel 安装器进行安装。

2.通过 Composer安装

Laravel框架安装命令:

composer create-project --prefer-dist laravel/laravelzsproject

●create-project表示创建项目

●--prefer-dist表示以压缩的方式下载

●laravel/laravel是框架在Composer的默认包仓库网站中的包名

●laravel表示将框架下载到laravel目录中5.8.*是版本号,表示安装5.8系列的最新版本

更新Laravel框架命令:

composer update laravel/framework

3.路由 控制器 视图

2.1路由配置文件: routes\web.php

路由示例:

Route::get('/', function (){

return

view('welcome');

Route::get()定义路由, get是路由的请求方式。

/ 表示当用户访问网站的首页。

view()函数表示要显示的视图, welcome表示视图文件名称。

Route类中的match()方法用来在1个路由中同时匹配多个请求方式,any() 方法用来在一个路由中匹配任意请求方式.

重定向路由的作用:用来实现页面跳转。

重定向路由的语法格式:

Route::redirect('请求URI', '重定向URI' [,'状态

码']);

●redirect表示实现路由重定向。

●状态码是可选参数,默认状态码是302。

重定向路由示例代码:将路由“hello"重定向到“1”。

Route:redirect('/hello', '/);

2.2创建控制器的命令:

php artisan make:controller控制器名

php artisan make:controller TestController

php artisan make:controller ZsController

●php artisan表示使用Laravel提供的artisan工具

●make:controller表示生成控制器, 在后面书写控制器名

控制器名采用大驼峰的形式,后面加上Controller后缀,如TestController bigSmalController ●ZsController

多学1招:单一动作控制器

单一动作控制器:指一个控制器只处理- - 个动作。

创建-一个Profile (个人主页) 控制器,示例命令:

php artisan make:controller ProfileController –invokable

单一动作控制器路由:

Route::get('user/{id}', 'ProfileController');

提示:单一动作控制器的路由规则中,不需要指定控制器的具体方法,当以调用方法的方式调用对象时,_invoke() 函数会被自动调用。

2.3 视图

视图文件的使用:在控制器中加载视图文件。

public function show()

{

//加载视图文件resources\views\show.blade.php

return view('show');

}

添加路由:

Route::get('test/show', 'TestController@show');

使用view()函数或with()函数为视图传递数据,示例代码:

//方式1:通过view()函数的第2个参数传递数据

return view(模板文件,数组);

//方式2:通过with()函数传递数据

return view(模板文件)->with(数组);

//方式3:通过连续调用with()函数传递数据

return view(模板文件)->with(名称,值)->with(名称,值)...

4.Laravel常用功能

4.1文件上传

Laravel框架封装好了文件上传相关的代码,调用相关方法即可实现文件上传。

文件上传表单:

<form action= "/test/up" method="post" enctype=" multipart/form-data">

上传头像: <input type="file" name="avatar"><br>{{ csrf_ field() }}

<input type="submit" value="提交">

</form>

处理用户上传的文件:

public function up(Request $request)

if ($request->hasFile('avatar')) {

//判断文件在请求中是否存在

$avatar = $request-> file('avatar');

//获取上传文件对象

if ($avatar->isValid()) {

//验证文件是否上传成功

$name = md5(microtime(true)) . '' . $avatar-> extension(); //自动生成文件

$avatar-> move('static/upload', $name); // 将上传的文件移动到指定目录

$path = '/static/upload/ . $name;

//显示上传结果

return '<a href="' . $path. ">查看文件</a>';

}

return $avatar-> getErrorMessage();

}

return '文件上传失败;

}

一个简单的PHP文件上传功能的例子:

HTML文件:

<!DOCTYPE html>
<html>
   <head>
      <title>PHP文件上传</title>
   </head>
   <body>
      <h2>上传文件</h2>
      <form action="upload.php" method="post" enctype="multipart/form-data">
         <input type="file" name="fileToUpload" id="fileToUpload"><br><br>
         <input type="submit" value="上传" name="submit">
      </form>
   </body>
</html>

PHP文件:

<?php
   if(isset($_POST['submit'])) {
      $target_dir = "uploads/";
      $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
      $uploadOk = 1;
      $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
      
      // 检查文件是否已存在
      if (file_exists($target_file)) {
         echo "抱歉,该文件已存在。";
         $uploadOk = 0;
      }
      
      // 检查文件大小
      if ($_FILES["fileToUpload"]["size"] > 500000) {
         echo "抱歉,您要上传的文件太大。";
         $uploadOk = 0;
      }
      
      // 允许上传的文件类型
      if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
      && $imageFileType != "gif" ) {
         echo "抱歉,只允许上传 JPG, JPEG, PNG & GIF 文件。";
         $uploadOk = 0;
      }
      
      // 检查如果 $uploadOk 为 0 就说明文件上传失败
      if ($uploadOk == 0) {
         echo "抱歉,您的文件未上传。";
      // 如果一切都好,则尝试上传文件
      } else {
         if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 上传成功。";
         } else {
            echo "抱歉,上传文件时出现了一个错误。";
         }
      }
   }
?>

4.2 数据分页

Laravel在模型中提供了分页查询的方法传入每页显示的记录数即可

分页查询示例代码:

$data =

Member::paginate(2);

●Member 是模型名

●paginate() 是分页查询方法,参数2表示每页显示2条数据

paginate()方法前调用where()、

orderBy()辅助查询方法,示例代码:

$data = Member::where('id', '>', 1)->paginate(2);

<?php
   // 数据库连接信息
   $servername = "localhost";
   $username = "username";
   $password = "password";
   $dbname = "myDB";

   // 创建连接
   $conn = mysqli_connect($servername, $username, $password, $dbname);

   // 检查连接
   if (!$conn) {
      die("连接失败: " . mysqli_connect_error());
   }

   // 获取数据总数
   $sql = "SELECT COUNT(*) FROM `student_scores`";
   $result = mysqli_query($conn, $sql);
   $rows = mysqli_fetch_array($result)[0];

   // 设置每页显示的数据条数
   $per_page = 10;

   // 计算总页数
   $pages = ceil($rows / $per_page);

   // 获取当前页数
   $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

   // 计算起始位置
   $start = ($page - 1) * $per_page;

   // 查询数据,限制每页显示的数据条数和起始位置
   $sql = "SELECT * FROM `student_scores` LIMIT $start, $per_page";
   $result = mysqli_query($conn, $sql);
?>

<!-- 在HTML文件中显示分页数据 -->
<html>
   <head>
      <title>学生成绩列表</title>
   </head>
   <body>
      <h2>学生成绩列表</h2>
      <table>
         <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>语文</th>
            <th>数学</th>
            <th>英语</th>
         </tr>
         <?php while($row = mysqli_fetch_assoc($result)) { ?>
            <tr>
               <td><?php echo $row['id']; ?></

4.3验证码

验证码的实现步骤:

●安装验证码库

●注册验证码服务

●在视图显示验证码

●配置验证码

●判断验证码的值是否正确

安装验证码库

在Packagist网站中找到mews/captcha验证码库,使用Composer载入验证码

composer require

mews/captcha=3.0

创建验证码配置文件

验证码默认9位,通过修改配置文件更改验证码的位数,创建验证码配置文件命令

php artisan vendor:publish

执行创建命令后会出现提示信息,输入验证码的服务提供者对应的序号,

就会自动生成config\captcha.php文件

4.4 响应控制

调用redirect()函数实现页面跳转:

public function jump()

{

return

redirect('test/home');

}

重定向时指定路由: .

return redirect()-> route('home');

重定向时调用withErrors()方法传递错误信息:

return redirect('test/edit')-> withErrors(['错误提示']);

<?php
   // 设置HTTP头部信息
   header('Cache-Control: max-age=3600');
   header('Content-Encoding: gzip');

   // 输出压缩后的文本
   echo gzcompress("欢迎来到我的网站!");
?>

4.5缓存操作

缓存的配置文件config\cache.php,缓存数据默认保存在文件,还支持Memcached、

Redis缓存系统。

默认的缓存配置:

'default' => env('CACHE_ DRIVER',

'file'),

程序优先读取.env文件中配置的CACHE_DRIVER(缓存驱.

动)

如果.env文件中没有配置,则使用file作为默认值。

文件缓存的相关配置:

'file' => [

'driver' => 'file',

'path' =>

storage_ path('framework/cache/data')

●driver表示缓存驱动

●path用来配置缓存文件的保存路径

使用pull()、forget() 或flush()方法删除缓存: .

//从缓存中读取指定的缓存项并删除

$value = Cachepul('key');

//删除缓存项

Cacheforget('key');

//清除所有缓存

Cache::flush();

<?php
   // 设置缓存过期时间
   $cache_expire = 60 * 60 * 24 * 30; // 30天

   // 设置HTTP头部信息
   header("Pragma: public");
   header("Cache-Control: max-age=".$cache_expire);

   // 检查缓存是否存在
   $file = 'cache/data.txt';
   
   if (file_exists($file)) {
      // 如果缓存存在,直接从缓存中读取数据
      $data = file_get_contents($file);
   } else {
      // 如果缓存不存在,重新生成数据,并将其缓存到文件中
      $data = getDataFromDatabase();
      file_put_contents($file, $data);
   }

   // 输出缓存数据
   echo $data;

   // 从数据库中获取数据
   function getDataFromDatabase() {
      // 连接数据库
      $conn = mysqli_connect('localhost', 'user', 'pass', 'dbname');

      // 查询数据
      $sql = 'SELECT * FROM `data`';
      $result = mysqli_query($conn, $sql);

      // 处理数据
      $data = array();
      while ($row = mysqli_fetch_assoc($result)) {
         $data[] = $row['field1'] . ',' . $row['field2'] . ',' . $row['field3'] . "\n";
      }

      // 返回数据
      return implode('', $data);
   }
?>

4.6辅助函数

常用数组函数: 函数名 功能描述

Arr::add() 添加指定键值对到数组

Arr::get() 从数组中获取值,如果获取的值不存在,返回默认值

Arr::first() 返回数组的第一个元素

Arr:last() 返回数组的最后一个元素

Arr::except() 根据键名将指定键值对的元素从数组中移除

Arr:forget() 使用“."拼接键名从嵌套数组中移除给定键值对

Arr::collapse() 将多个数组合并成-一个

Arr:flatten() 将多维数组转化为一维数组,数组的键是索引

常用路径函数:  函数名 功能描述

app_ path() 返回app目录的绝对路径

base_ path() 返回项目根目录的绝对路径

config_ path()返 回应用配置目录config的绝对路径

database_ path() 返回应用数据库目录database的完整路径

public_ path()返回 public目录的绝对路径

resource_ path() 返回 resources目录的绝对路径

storage_ path() 返回 storage目录的绝对路径

function capitalize($str) {
   $first_char = substr($str, 0, 1); // 获取字符串的第一个字符
   $rest_str = substr($str, 1); // 获取字符串的剩余部分
   $capitalized = strtoupper($first_char) . $rest_str; // 将第一个字符转换成大写,并与剩余部分合并
   return $capitalized;
}

5.Laravel学习中常见的问题以及解决方法

1. 配置错误:Laravel需要正确配置才能正确运行。配置错误可能会导致错误的应用程序行为。

解决方法:当你遇到配置错误时,可以通过查看Laravel日志文件来获得更多的错误信息。在Laravel配置文件中检查各种参数,确保它们正确地设置。

2. 依赖关系错误:Laravel包含许多依赖关系,这些依赖关系必须正确安装,并使用正确的版本。

解决方法:使用Composer管理Laravel的依赖关系。在composer.json文件中指定正确的依赖项和版本。使用Composer Install命令更新依赖项。

3. 模型/数据库操作错误:当你进行数据库操作时,可能会遇到各种错误,如格式错误、逻辑错误等。

解决方法:在进行模型/数据库操作之前,确保所有的数据都是正确的,并且符合规定的格式。使用Laravel提供的查询构造器和ORM(对象关系映射)来减少出错的机会。

4. 功能模块无法正确运行:你可能会遇到某个功能模块无法正确运行的情况,例如表单验证、授权、缓存等。

解决方法:使用Laravel提供的应用程序服务和类,例如表单验证器、授权类和缓存类等。使用这些服务和类可以减少开发时间,并且保证了应用程序的正确性。

5. 性能问题:Laravel是一个相对较重的框架,如果应用程序没有按照最佳实践进行开发,可能会导致性能问题。

解决方法:使用Laravel提供的缓存服务来缓存应用程序的一些数据,从而减少数据库查询的次数。还可以使用Laravel提供的排队系统、事件和侦听器来减少每个请求的处理时间。

6.总结

Laravel是一个流行的PHP Web框架,它具有干净、优雅的语法和开箱即用的特性,使得Laravel成为了PHP Web开发的首选框架之一。在学习Laravel框架的过程中,我发现了一些重要的知识点和技能。

首先,Laravel框架的核心知识点是MVC模式(模型、视图、控制器)。它们都是Laravel应用程序的必要组成部分,它们的主要职责如下:

- 模型:用于定义应用程序中的数据模型和数据库交互。

- 视图:用于渲染应用程序中的Web页面,并向用户提供界面。

- 控制器:用于处理用户请求,并调用模型和视图来执行相应的操作。

除此之外,在学习Laravel框架时需要掌握的另一个重要知识点是路由器。Laravel利用路由器将URL请求映射到对应的控制器和操作上,并提供了一些便捷的方式来定义路由器。

其次,学习Laravel框架需要了解数据库迁移和填充的概念。Laravel提供了强大的数据库迁移和填充器,用于方便地进行数据库模式管理和测试数据填充。使用迁移和填充,我们可以轻松地创建、更新或回滚数据库模式,并且可以让我们轻松地添加/修改/删除测试数据。

另外,Laravel框架还提供了许多额外的功能和库,如表单验证、用户认证、邮件发送、缓存、队列、事件等。这些功能可以大大增强Laravel框架的能力,同时也让开发变得更加高效。

最后,学习Laravel框架需要我们掌握良好的编程习惯和最佳实践。这包括良好的命名规范、高质量的代码注释、单元测试和持续集成。通过遵循最佳实践,可以确保我们的代码的可读性、可维护性和可扩展性。

总之,Laravel是一个极其强大且易于使用的PHP框架,拥有丰富的特性、清晰的语法和大量的文档和教程资源。在学习Laravel框架时,我们需要始终保持学习的动力,不断探索和尝试新的特性,同时也需要坚持良好的编程实践,以构建出高质量的Web应用程序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值