如何在Laravel的5个刀片模板中通过"use"使用自定义类?

Nes*_*k27 3 php linux apache laravel

我在Windows和基于Linux的服务器上有一个Web服务器.当我在Windows上启动Laravel 5项目时,一切正常,但我在Linux(ubuntu)服务器上遇到了麻烦,我的托管也遇到了同样的麻烦.当我尝试加载索引页面时,我收到如下错误:

找不到"App\Helpers\Substr"类

之所以发生这种情况,是因为我在我的刀片模板中使用了自定义帮助程序,并通过"use"运算符加载它,如下所示:

<?php

use App\Helpers\Substr;
use App\Helpers\LoaderBtn;

?>

@extends('zaks.public')

@section('content')

@include('zaks.search')
Run Code Online (Sandbox Code Playgroud)

那么,在项目完成后,在这种情况下可能是一个很好的解决方案?

Pau*_*ich 11

首先,确保您的类通过Composer左右自动加载.

然后,您可以将命名空间类添加到'aliases'数组中config/app.php,如下所示:

'aliases' => array(
   // other aliases...
   'App_Helper_Substr' => 'App\Helpers\Substr',
);
Run Code Online (Sandbox Code Playgroud)

然后以常规方式在您的视图中使用它:

App_Helper_Substr->something...
App_Helper_Substr::something();
Run Code Online (Sandbox Code Playgroud)

您可以根据需要为别名命名.


Pev*_*ara 0

我猜问题是 Windows 机器上的文件系统不区分大小写。因此,当您尝试加载类似 的类时App\Helpers\Substr,虽然您的实际意思是App\Helpers\SubStr,或者在情况下(PSR-4)文件路径与类名不完全对应,您的类仍将在 Windows 上加载。

然而,Linux 就不那么宽容了,并且有一个区分大小写的文件系统(至少我的 dev Ubuntu 版本是这样,但我猜这是 Linux 的默认设置)。

因此,要解决此问题,您应该做的是追踪您的“案例拼写错误”并修复它。

为了防止这些问题,并在犯错误时立即捕获它们,我强烈建议仅在区分大小写的文件系统上进行开发。我知道你可以在 mac 上创建区分大小写的分区,所以我猜想 Windows 上也可以做类似的事情。或者,您可以在开发时在像homestead这样的 Linux VM 中工作。我非常喜欢让您的开发环境尽可能接近生产环境。