首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在laravel控制器中包括一个文件?

在laravel控制器中包括一个文件?
EN

Stack Overflow用户
提问于 2015-08-23 06:50:53
回答 4查看 19.1K关注 0票数 3

我正在创建一个具有.php文件API形式的附加功能的项目,它包含一些函数和一些类(其中一些类名与类名中的Laravel相冲突),因此,我的问题是如何将这个文件包含在我的Laravel中,以调用文件中的函数,使用该文件的类而不引用.php类,并且对.php API文件进行更少或没有修改?

注*我使用的是Laravel-5.1

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-03 09:33:40

谢谢大家努力解决我的问题,但是没有一个解决方案对我有用,下面是我的问题。

下面是我想要包含/集成的php文件的结构

代码语言:javascript
运行
复制
<?php

class Misc {

    const SUCCESS = 1;
    const FAILURE = 0;

    public static function get_hash ( $key )
    {
        ...
        ...
        ...
    }

    public static function show_reponse ( $result )
    {
        ...
    }

}

function check($keyhash) 
{
    ...
    ...
    ...
}

function function2() 
{
    ...
    ...
    ...
}

class Response {

    public function __construct ( $key )
    {
        ...
    }

    public function __destruct ()
    {
        unset( $this->key );
        unset( $this->params );
    }

    public function __set ( $key)
    {
        ...
    }

    public function __get ( $key )
    {
        return $this->params[$key];
    }

    private function check_now ()
    {
        ...
    }
}

我面临的主要问题是类名Response,它与Laravel Response类冲突,所以我只是从文件中删除了所有类,并移到了Laravel\App文件夹中新文件夹中的单个文件中,并向所有类添加了名称空间。

然后,我在laravel\App目录中移动了PHP文件中的所有函数。

并使用类名以及定义的命名空间,并且由于我将所有函数移动到不同的PHP文件中,所以我可以很容易地调用这些函数

这是我最后一个文件夹的结构

拉勒维尔

代码语言:javascript
运行
复制
  -App
    -Console
    -Events
    -Exceptions
    -...
    -Libraries(Folder Containing Individual PHP files of classes from original file)
    -Providers
    -helpers.php(File containing all functions from original file)
    -User.php
  -bootstrap
  -...
  -...
票数 0
EN

Stack Overflow用户

发布于 2015-08-23 11:59:01

如果您有一个自定义文件,其中包含需要为每个请求加载的一些类/函数,则需要确保将其添加到自动加载程序中。

composer.json中,在autoload部分中添加以下内容:

代码语言:javascript
运行
复制
"autoload": {
  "files": [
    "path/to/your/File.php"
  ]
}

这将确保文件已加载。现在,您需要的是一种使用这些类而不与现有Laravel类发生冲突的方法。

首先,确保在包含的文件的顶部有一个名称空间声明--比如名称空间您的\ namespace 。为了避免冲突,在代码中引用PHP时,需要显式地告诉PHP您指的是哪个类。您已经提到了您的文件包含一个响应类,该类也存在于Laravel中。为了能够同时使用这两种方法,您需要将其中一个化名为:

代码语言:javascript
运行
复制
use Illuminate\Http\Response as LaravelResponse;
use Your\Namespace\Response;

现在,在您的代码中,您可以将Laravel的响应类称为LaravelResponse,,也可以通过简单的响应来引用您的响应。

只要该文件位于Laravel可访问的文件夹中,并将其修补程序添加到composer.json.中,则文件的位置与此无关

请记住,每个文件存储多个类是不可取的做法。我强烈建议您将罚款分成每个类单独的文件+一个带有全局函数的附加文件。

票数 2
EN

Stack Overflow用户

发布于 2015-08-23 07:12:26

化名

例如。

代码语言:javascript
运行
复制
use App\Http\Requests\Request as DifferentRequest;

DifferentRequest->doStuff();

混叠/进口

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32163999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档