Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过“使用自定义类”;使用「;在拉威尔';s 5刀片模板?_Php_Linux_Apache_Laravel - Fatal编程技术网

Php 如何通过“使用自定义类”;使用「;在拉威尔';s 5刀片模板?

Php 如何通过“使用自定义类”;使用「;在拉威尔';s 5刀片模板?,php,linux,apache,laravel,Php,Linux,Apache,Laravel,我在基于windows和Linux的服务器上有一个web服务器。当我在windows上启动Laravel5项目时,一切正常,但我在Linux(ubuntu)服务器和主机上遇到了同样的问题。当我尝试加载索引页时,我遇到如下错误: <?php use App\Helpers\Substr; use App\Helpers\LoaderBtn; ?> @extends('zaks.public') @section('content') @include('zaks.search

我在基于windows和Linux的服务器上有一个web服务器。当我在windows上启动Laravel5项目时,一切正常,但我在Linux(ubuntu)服务器和主机上遇到了同样的问题。当我尝试加载索引页时,我遇到如下错误:

<?php

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

?>

@extends('zaks.public')

@section('content')

@include('zaks.search')
'aliases' => array(
   // other aliases...
   'App_Helper_Substr' => 'App\Helpers\Substr',
);
找不到类“App\Helpers\Substr”

发生这种情况是因为我在刀片模板中使用自定义帮助程序,并通过“使用”操作符加载它,如下所示:

<?php

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

?>

@extends('zaks.public')

@section('content')

@include('zaks.search')
'aliases' => array(
   // other aliases...
   'App_Helper_Substr' => 'App\Helpers\Substr',
);

@扩展('zaks.public')
@节(“内容”)
@包括('zaks.search')

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

我猜问题在于Windows计算机上的文件系统不区分大小写。因此,当您尝试加载类(如
App\Helpers\Substr
)时,您实际上指的是
App\Helpers\Substr
,或者文件路径与案例(PSR-4)中的类名不完全对应时,您的类仍将在Windows上加载

然而Linux不那么宽容,它有一个区分大小写的文件系统(至少我的开发者Ubuntu版本是这样的,但我想这是Linux的默认版本)

所以,要解决这个问题,你应该做的是追踪你的“案例输入错误”并解决它


为了防止这些问题,并在犯错误时立即发现它们,我强烈建议只开发区分大小写的文件系统。我知道你可以在mac上做一个区分大小写的分区,所以我想Windows也可以做类似的事情。或者,您也可以在开发时在Linux虚拟机中工作。我非常喜欢让您的开发环境尽可能靠近生产环境。

首先,确保您的类是通过Composer等自动加载的

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

<?php

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

?>

@extends('zaks.public')

@section('content')

@include('zaks.search')
'aliases' => array(
   // other aliases...
   'App_Helper_Substr' => 'App\Helpers\Substr',
);
然后以常规方式在您的视图中正确使用它:

App_Helper_Substr->something...
App_Helper_Substr::something();

您可以随意命名别名。

使用视图生成器:谢谢!View composer看起来很适合这个项目,但无论如何我都无法理解为什么在windows中所有东西都可以工作。是区分大小写的问题吗?为什么?我正试着这么做,但看起来对我不起作用。可能此解决方案仅适用于每个自定义类的服务提供商,如Intervention\Image\ImageServiceProvider::class和'Image'=>Intervention\Image\Facades\Image::class,工作起来很有魅力。