Laravel Herd

macOS 文档

自定义驱动程序

#
自定义驱动程序

您可以使用自己的驱动程序扩展 Herd,以支持支持框架的自定义设置,或添加 Herd 不开箱即用支持的新框架。

Herd 在内部利用了 Laravel Valet 的一个版本来提供站点服务,并包含 Valet 提供的所有 驱动程序。这些驱动程序是创建您自己的自定义驱动程序的良好起点,并且通常比从头开始扩展它们更有意义。

将您的自定义驱动程序放在您机器上的相关 valet 目录中,Herd 会自动加载它。

–/Library/Application Support/Herd/config/valet/Drivers

#
自定义 Laravel 驱动程序

此自定义驱动程序示例扩展了现有的 Laravel 驱动程序,并对其进行了修改,使其从 web 目录而不是 public 目录提供应用程序服务。

 
namespace Valet\Drivers\Custom;
 
use Valet\Drivers\LaravelValetDriver;
 
class CustomLaravelValetDriver extends LaravelValetDriver
{
/**
* Determine if the driver serves the request.
*/
public function serves(string $sitePath, string $siteName, string $uri): bool
{
return file_exists($sitePath.'/web/index.php') &&
file_exists($sitePath.'/artisan');
}
 
/**
* Determine if the incoming request is for a static file.
*/
public function isStaticFile(string $sitePath, string $siteName, string $uri)/*: string|false */
{
if (file_exists($staticFilePath = $sitePath.'/web'.$uri)
&& is_file($staticFilePath)) {
return $staticFilePath;
}
 
$storageUri = $uri;
 
if (strpos($uri, '/storage/') === 0) {
$storageUri = substr($uri, 8);
}
 
if ($this->isActualFile($storagePath = $sitePath.'/storage/app/public'.$storageUri)) {
return $storagePath;
}
 
return false;
}
 
/**
* Get the fully resolved path to the application's front controller.
*/
public function frontControllerPath(string $sitePath, string $siteName, string $uri): ?string
{
if (file_exists($staticFilePath = $sitePath.'/web'.$uri)
&& $this->isActualFile($staticFilePath)) {
return $staticFilePath;
}
 
return $sitePath.'/web/index.php';
}
}