目录
1、概述
Valet Or Homestead
2、安装
3、服务站点
park命令
link命令
4、分享站点
5、查看日志
6、自定义Valet驱动
serves方法
isStaticFile方法
frontControllerPath方法
7、其他Valet命令
首页 后端开发 php教程 [ Laravel 5.2 文档 ] 开始 -- Laravel Valet(Mac开发环境)

[ Laravel 5.2 文档 ] 开始 -- Laravel Valet(Mac开发环境)

Jun 20, 2016 pm 12:29 PM

1、概述

Valet是为Mac提供的极简主义开发环境,没有Vagrant、Apache、Nginx,也没有 /etc/hosts文件,甚至可以使用本地隧道公开共享你的站点。

在Mac中,当你启动机器时,Laravel Valet总是在后台运行PHP内置的Web服务器,然后通过使用 DnsMasq,Valet将所有请求代理到 *.dev域名并指向本地机器安装的站点。这样一个极速的Laravel开发环境只需要占用7M内存。

Valet并不是想要替代Vagrant或者Homestead,只是提供了另外一种选择,更加灵活、极速、以及占用更小的内存空间。

Valet为我们提供了以下软件和工具:

  • Laravel
  • Lumen
  • Statamic
  • Craft
  • WordPress
  • Jigsaw
  • 静态HTML

当然,你还可以通过自定义的驱动扩展Valet。

Valet Or Homestead

正如你所知道的,Laravel 还提供了另外一个开发环境Homestead。Homestead和Valet的不同之处在于两者的目标受众和本地开发方式。Homestead提供了一个完整的包含自动化Nginx配置的Ubuntu虚拟机,如果你需要一个完整的虚拟化Linux开发环境或者使用的是Windows/Linux操作系统,那么Homestead无疑是最佳选择。

Valet只支持Mac,并且要求本地安装了PHP和数据库服务器,这可以通过使用 Homebrew命令轻松实现( brew install php70以及 brew install mariadb),Valet通过最小的资源消耗提供了一个极速的本地开发环境,如果你只需要PHP/MySQL并且不需要完整的虚拟化开发环境,那么Valet将是最好的选择。

最后,Valet和Homestead都是配置本地Laravel开发环境的好帮手,选择使用哪一个取决于你个人的喜好或团队的需求。

2、安装

Valet要求Mac操作系统和 Homebrew。安装之前,需要确保没有其他程序如Apache或Nginx绑定到本地的80端口。安装步骤如下:

  • 使用 brew update安装或更新Homebrew到最新版本
  • 通过运行 brew services list确保 brew services有效并且能获取到正确的输出,如果无效,则需要 添加。
  • 通过Homebrew安装PHP 7.0: brew install php70。
  • 通过Composer安装Valet: composer global require laravel/valet(确保 ~/.composer/vendor/bin在系统路径中)
  • 运行 valet install命令,这将会配置并安装Valet和DnsMasq,然后注册Valet后台随机启动。

安装完Valet后,尝试使用命令如 ping foobar.dev在终端ping一下任意 *.dev域名,如果Valet安装正确就会看到来自 127.0.0.1的响应。

每次系统启动的时候Valet后台会自动启动,而不需要再次手动运行 valet start或 valet install。

数据库

如果你需要数据库,可以在命令行通过 brew install mariadb安装MariaDB,安装完成后就可以在本机通过用户名 root和一个空密码连接到数据库。

3、服务站点

Valet安装完成后,就可以启动服务站点,Valet为此提供了两个命令: park和 link

park命令

  • 在Mac中创建一个新目录,例如 mkdir ~/Sites,然后进入这个目录并运行 valet park。这个命令会将当前所在目录作为web根目录。
  • 接下来,在新建的目录中创建一个新的Laravel站点: laravel new blog。
  • 在浏览器中访问 http://blog.dev。

这就是我们要做的全部工作。现在,所有在 Sites目录中创建的Laravel项目都可以通过 http://folder-name.dev这种方式在浏览器中访问,是不是很方便?

link命令

link命令也可以用于本地Laravel站点,这个命令在你想要在目录中提供单个站点时很有用。

  • 要使用这个命令,先切换到你的某个项目并运行 valet link app-name,这样Valet会在 ~/.valet/Sites中创建一个符号链接指向当前工作目录。
  • 运行完 link命令后,可以在浏览器中通过 http://app-name.dev访问。

要查看所有的链接目录,可以运行 valet links命令。你也可以通过 valet unlink app-name来删除符号链接。

4、分享站点

Valet还提供了一个命令用于将本地站点共享给其他人,这不需要任何额外工具即可实现。

要共享站点,切换到站点所在目录并运行 valet share,这会生成一个可以公开访问的URL并插入剪贴板,以便你直接复制到浏览器地址栏,就是这么简单。

要停止共享站点,使用 Control + C即可。

5、查看日志

如果你想要在终端显示所有站点的日志,可以运行 valet logs命令,这会在终端显示新的日志。

6、自定义Valet驱动

你还可以编写自定义的Valet驱动为运行于非Valet原生支持的PHP应用提供服务。安装完Valet时会创建一个 ~/.valet/Drivers目录,该目录中有一个 SampleValetDriver.php文件,这个文件中有一个演示如何编写自定义驱动的示例。编写一个驱动只需要实现三个方法: serves、 isStaticFile和 frontControllerPath。

这三个方法接收 $sitePath、 $siteName和 $uri值作为参数,其中 $sitePath表示站点目录,如 /Users/Lisa/Sites/my-project, $siteName表示主域名部分,如 my-project,而 $uri则是输入的请求地址,如/foo/bar。

编写好自定义的Valet驱动后,将其放到 ~/.valet/Drivers目录并遵循 FrameworkValetDriver.php这种命名方式,举个例子,如果你是在为Wordpress编写自定义的valet驱动,对应的文件名称为 WordPressValetDriver.php。

下面我们来具体讨论并演示自定义Valet驱动需要实现的三个方法。

serves方法

如果自定义驱动需要继续处理输入请求, serves方法会返回 true,否则该方法返回 false。因此,在这个方法中应该判断给定的 $sitePath是否包含你服务类型的项目。

例如,假设我们编写的是 WordPressValetDriver,那么对应 serves方法如下:

/** * Determine if the driver serves the request. * * @param  string  $sitePath * @param  string  $siteName * @param  string  $uri * @return void * @translator laravelacademy.org */public function serves($sitePath, $siteName, $uri){    return is_dir($sitePath.'/wp-admin');}
登录后复制

isStaticFile方法

isStaticFile方法会判断输入请求是否是静态文件,例如图片或样式文件,如果文件是静态的,该方法会返回磁盘上的完整路径,如果输入请求不是请求静态文件,则返回 false:

/** * Determine if the incoming request is for a static file. * * @param  string  $sitePath * @param  string  $siteName * @param  string  $uri * @return string|false */public function isStaticFile($sitePath, $siteName, $uri){    if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {        return $staticFilePath;    }    return false;}
登录后复制

注: isStaticFile方法只有在 serves方法返回 true并且请求URI不是 /的时候才会被调用。

frontControllerPath方法

frontControllerPath方法会返回前端控制器的完整路径,通常是 index.php:

/** * Get the fully resolved path to the application's front controller. * * @param  string  $sitePath * @param  string  $siteName * @param  string  $uri * @return string */public function frontControllerPath($sitePath, $siteName, $uri){    return $sitePath.'/public/index.php';}
登录后复制

7、其他Valet命令

命令 描述
valet forget 从”parked”目录运行该命令以便从parked目录列表中移除该目录
valet paths 查看你的”parked”路径
valet restart 重启Valet
valet start 启动Valet
valet stop 关闭Valet
valet uninstall 卸载Valet
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

See all articles