Laravel 是一个具有表现力、优雅语法的 Web 运用程序框架,Laravel 致力于供应令人惊叹的开拓职员体验,同时供应强大的功能,例如彻底的依赖注入、富有表现力的数据库抽象层、行列步队和操持作业、单元和集成测试等等,无论你是 PHP Web 框架的新手还是有多年的履历,Laravel 都是一个可以与你一起发展的框架。
Laravel特性大略、快速的路由引擎。强大的依赖注入容器。用于会话和缓存存储的多个后端。富有表现力、直不雅观的数据库 ORM。与数据库无关的模式迁移。强大的后台作业处理。实时事宜广播。macOS 入门

如果你在 Mac 上开拓并且已经安装了Docker Desktop ,你可以利用一个大略的终端命令来创建一个新的 Laravel 项目。例如,要在名为“example-app”的目录中创建一个新的 Laravel 运用程序,您可以在终端中运行以下命令:
curl -s "https://laravel.build/example-app" | 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 https://laravel.build/example-app | 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 https://laravel.build/example-app | 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.0BCMath 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=sqliteDB_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
开源地址:https://github.com/laravel/laravel