您的位置 首页 php

Laravel:拥有优雅语法的 Web 应用程序框架

《开源精选》是我们分享 Github 、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的 Laravel 是一个具有表现力、优雅语法的 Web 应用程序框架。

Laravel 是一个具有表现力、优雅语法的 Web 应用程序框架,Laravel 致力于提供令人惊叹的开发人员体验,同时提供强大的功能,例如彻底的依赖注入、富有表现力的 数据库抽象层 、队列和计划作业、单元和集成测试等等,无论你是 PHP Web 框架的新手还是有多年的经验,Laravel 都是一个可以与你一起成长的框架。

Laravel特性

  • 简单、快速的路由引擎。
  • 强大的依赖注入容器。
  • 用于会话和缓存存储的多个后端。
  • 富有表现力、直观的数据库 ORM
  • 与数据库无关的模式迁移。
  • 强大的后台作业处理。
  • 实时事件广播。

Laravel安装

macOS 入门

如果你在 Mac 上开发并且已经安装了Docker Desktop ,你可以使用一个简单的终端命令来创建一个新的 Laravel 项目。例如,要在名为“example-app”的目录中创建一个新的 Laravel 应用程序,您可以在终端中运行以下命令:

 curl -s "#34; | bash  

当然,您可以将此 URL 中的“example-app”更改为您喜欢的任何内容 – 只需确保应用程序名称仅包含字母数字字符、破折号和下划线。Laravel 应用程序的目录将在您执行命令的目录中创建。

创建项目后,您可以导航到应用程序目录并启动 Laravel Sail。Laravel Sail 提供了一个简单的命令行界面,用于与 Laravel 的默认 Docker 配置进行交互:

 cd example-app
 
./vendor/bin/sail up  

第一次运行 Sailup命令时,Sail 的应用程序容器将在您的本地计算机上构建。这可能需要几分钟。不用担心,随后尝试启动 Sail 会快得多。

在 Windows 上开始

在我们在您的 Windows 机器上创建新的 Laravel 应用程序之前,请确保安装Docker Desktop。接下来,您应该确保已安装并启用 Windows Subsystem for Linux 2 (WSL2)。 WSL 允许您在 Windows 10 上本地运行 Linux 二进制 可执行文件。

启动Windows 终端并为您的 WSL2 Linux 操作系统开始一个新的终端会话。接下来,您可以使用一个简单的终端命令来创建一个新的 Laravel 项目。例如,要在名为“example-app”的目录中创建一个新的 Laravel 应用程序,您可以在终端中运行以下命令:

 curl -s  | bash  

当然,您可以将此 URL 中的“example-app”更改为您喜欢的任何内容 – 只需确保应用程序名称仅包含字母数字字符、破折号和下划线。Laravel 应用程序的目录将在您执行命令的目录中创建。

创建项目后,您可以导航到应用程序目录并启动 Laravel Sail。Laravel Sail 提供了一个简单的命令行界面,用于与 Laravel 的默认 Docker 配置进行交互:

 cd example-app
 
./vendor/bin/sail up  

第一次运行 Sailup命令时,Sail 的应用程序容器将在您的本地计算机上构建。这可能需要几分钟。不用担心,随后尝试启动 Sail 会快得多。

Linux 入门

如果你在 Linux 上开发并且已经安装了Docker Compose ,你可以使用一个简单的终端命令来创建一个新的 Laravel 项目。例如,要在名为“example-app”的目录中创建一个新的 Laravel 应用程序,您可以在终端中运行以下命令:

 curl -s  | bash  

当然,您可以将此 URL 中的“example-app”更改为您喜欢的任何内容 – 只需确保应用程序名称仅包含字母数字字符、破折号和下划线。Laravel 应用程序的目录将在您执行命令的目录中创建。

创建项目后,您可以导航到应用程序目录并启动 Laravel Sail。Laravel Sail 提供了一个简单的命令行界面,用于与 Laravel 的默认 Docker 配置进行交互:

 cd example-app
 
./vendor/bin/sail up  

第一次运行 Sailup命令时,Sail 的应用程序容器将在您的本地计算机上构建。这可能需要几分钟。不用担心,随后尝试启动 Sail 会快得多。

Laravel 全栈框架

Laravel 可以作为一个全栈框架。“全栈”框架是指您将使用 Laravel 将请求路由到您的应用程序,并通过Blade 模板或单页应用程序混合技术(如Inertia.js )呈现您的前端。这是使用 Laravel 框架最常见的方式,在我们看来,也是使用 Laravel 最有效的方式。

如果这是您计划使用 Laravel 的方式,您可能需要查看我们关于路由、视图或Eloquent ORM的文档。此外,您可能有兴趣了解Livewire和Inertia.js等社区软件包。这些包允许您将 Laravel 用作全栈框架,同时享受单页 JavaScript 应用程序提供的许多 UI 优势。

Laravel API 后端

Laravel 也可以作为 JavaScript 单页应用程序或移动应用程序的 API 后端。例如,您可以使用 Laravel 作为Next.js应用程序的 API 后端。在这种情况下,您可以使用 Laravel 为您的应用程序提供身份验证和数据存储/检索,同时还可以利用 Laravel 的强大服务,例如队列、电子邮件、通知等。

Laravel 部署

服务器要求

  • PHP >= 8.0
  • BCMath PHP 扩展
  • Ctype PHP 扩展
  • cURL PHP 扩展
  • DOM PHP 扩展
  • 文件信息 PHP 扩展
  • JSON PHP 扩展
  • Mbstring PHP 扩展
  • OpenSSL PHP 扩展
  • PCRE PHP 扩展
  • PDO PHP 扩展
  • 标记器 PHP 扩展
  • XML PHP 扩展

Nginx

如果您将应用程序部署到运行 Nginx 的服务器上,您可以使用以下配置文件作为配置 Web 服务器 的起点。最有可能的是,需要根据您的服务器配置自定义此文件。

请确保,就像下面的配置一样,您的 Web 服务器将所有请求定向到您的应用程序public/index.php文件。您永远不应尝试将index.php文件移动到项目的根目录,因为从项目根目录提供应用程序会将许多敏感配置文件暴露给公共 Internet:

 server {
    listen 80;
    listen [::]:80;
    server_name example.com;
     root  /srv/example.com/public;
 
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
 
    index index.php;
 
     charset  utf-8;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    error_page 404 /index.php;
 
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
         include  fastcgi_ params ;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}  

部署到生产环境时,请确保您正在优化 Composer 的类自动加载器映射,以便 Composer 可以快速找到要为给定类加载的正确文件:

 php artisan config:cache  

该命令会将 Laravel 的所有配置文件合并到一个缓存文件中,这大大减少了框架在加载配置值时必须访问文件系统的次数。

Laravel 请求生命周期

第一步

对 Laravel 应用程序的所有请求的入口点是 public/index.php 文件。所有请求都由您的 Web 服务器(Apache / Nginx)配置定向到该文件。该 index.php 文件不包含太多代码。相反,它是加载框架其余部分的起点。

index.php 文件加载 Composer 生成的自动加载器定义,然后从 bootstrap /app.php . Laravel 本身采取的第一个动作是创建应用程序/服务容器的实例。

HTTP / 控制台内核

接下来,根据进入应用程序的请求类型,将传入请求发送到 HTTP 内核或控制台内核。这两个内核充当所有请求流经的中心位置。现在,让我们只关注位于 app/Http/Kernel.php .

HTTP 内核扩展了 Illuminate\Foundation\Http\Kernel 该类,该类定义了一个数组,该数组 bootstrappers 将在请求执行之前运行。这些引导程序配置错误处理、配置日志记录、检测应用程序环境,并执行在实际处理请求之前需要完成的其他任务。通常,这些类处理您不需要担心的内部 Laravel 配置。

HTTP 内核方法的方法签名handle非常简单:它接收 aRequest并返回 aResponse。将内核想象成一个代表整个应用程序的大黑匣子。向它提供 HTTP 请求,它将返回 HTTP 响应。

服务供应商

最重要的内核引导操作之一是为您的应用程序加载服务提供者。应用程序的所有服务提供者都在config/app.php配置文件的providers数组中进行配置。

Laravel 将遍历这个提供者列表并实例化它们中的每一个。实例化提供程序后,register将在所有提供程序上调用该方法。然后,一旦注册了所有提供者,boot就会在每个提供者上调用该方法。这样服务提供者可能依赖于每个容器绑定在其boot方法执行时被注册和可用。

服务提供者负责引导框架的所有各种组件,例如数据库、队列、验证和路由组件。基本上 Laravel 提供的每个主要功能都是由服务提供商引导和配置的。由于它们引导和配置框架提供的许多功能,服务提供者是整个 Laravel 引导过程中最重要的方面。

路由

应用程序中最重要的服务提供者之一是 App\Providers\RouteServiceProvider . 该服务提供者加载包含在您的应用程序 routes 目录中的路由文件。

一旦应用程序被引导并且所有服务提供者都已注册, Request 将被移交给路由器进行调度。路由器会将请求分派给路由或控制器,并运行任何特定于路由的中间件。

中间件 提供了一种方便的机制来过滤或检查进入应用程序的 HTTP 请求。例如,Laravel 包含一个中间件,用于验证您的应用程序的用户是否经过身份验证。如果用户未通过身份验证,中间件会将用户重定向到登录屏幕。但是,如果用户通过了身份验证,中间件将允许请求进一步进入应用程序。

整体

一旦路由或控制器方法返回响应,响应将通过路由的中间件向外传回,使应用程序有机会修改或检查传出响应。

最后,一旦响应通过中间件返回,HTTP 内核的 handle 方法返回响应对象,并且 index.php 文件在返回的响应上调用该 send 方法。该 send 方法将响应内容发送到用户的网络浏览器。

数据库:入门

配置

Laravel 数据库服务的配置位于应用程序的config/database.php配置文件中。在此文件中,您可以定义所有数据库连接,并指定默认情况下应使用哪个连接。此文件中的大多数配置选项由应用程序环境变量的值驱动。

默认情况下,Laravel 的示例环境配置已准备好与Laravel Sail一起使用,这是用于在本地机器上开发 Laravel 应用程序的 Docker 配置。但是,您可以根据本地数据库的需要随意修改数据库配置。

SQLite 配置

SQLite 数据库包含在文件系统上的单个文件中。touch您可以使用终端中的命令创建一个新的 SQLite 数据库: touch database/database.sqlite. 创建数据库后,您可以轻松地将 环境变量 配置为指向该数据库,方法是将数据库的绝对路径放在DB_DATABASE环境变量中:

 DB_CONNECTION= SQL ite
DB_DATABASE=/absolute/path/to/database.sqlite  

要为 SQLite 连接启用外键约束,您应该将 DB_FOREIGN_KEYS 环境变量设置为 true

 DB_FOREIGN_KEYS=true  

运行 SQL 查询

配置好数据库连接后,您可以使用DB外观运行查询。外观为每种类型的DB查询提供方法:select、update、insert、delete和 statement .

要运行基本的 SELECT 查询,您可以使用外观select上的方法:DB

 <?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
 
class UserController  extends  Controller
{
    /**
     * Show a list of all of the application's users.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $users = DB::select('select * from users where active = ?', [1]);
 
        return view('user.index', ['users' => $users]);
    }
}  

传递给该select方法的第一个参数是 SQL 查询,而第二个参数是需要绑定到查询的任何参数绑定。通常,这些是where子句约束的值。参数绑定提供对 SQL 注入的保护。

该select方法将始终返回一个array结果。数组中的每个结果都是一个 PHPstdClass对象,代表数据库中的一条记录:

 use Illuminate\Support\Facades\DB;
 
$users = DB::select('select * from users');
 
 foreach  ($users as $user) {
    echo $user->name;
}  

—END—

开源协议:MIT license

开源地址:

文章来源:智云一二三科技

文章标题:Laravel:拥有优雅语法的 Web 应用程序框架

文章地址:https://www.zhihuclub.com/77891.shtml

关于作者: 智云科技

热门文章

网站地图