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'; }}