我正在创建一个具有.php文件API形式的附加功能的项目,它包含一些函数和一些类(其中一些类名与类名中的Laravel相冲突),因此,我的问题是如何将这个文件包含在我的Laravel中,以调用文件中的函数,使用该文件的类而不引用.php类,并且对.php API文件进行更少或没有修改?
注*我使用的是Laravel-5.1
发布于 2015-09-03 09:33:40
谢谢大家努力解决我的问题,但是没有一个解决方案对我有用,下面是我的问题。
下面是我想要包含/集成的php文件的结构
<?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文件中,所以我可以很容易地调用这些函数
这是我最后一个文件夹的结构
拉勒维尔
-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
-...
-...
发布于 2015-08-23 11:59:01
如果您有一个自定义文件,其中包含需要为每个请求加载的一些类/函数,则需要确保将其添加到自动加载程序中。
在composer.json中,在autoload部分中添加以下内容:
"autoload": {
"files": [
"path/to/your/File.php"
]
}
这将确保文件已加载。现在,您需要的是一种使用这些类而不与现有Laravel类发生冲突的方法。
首先,确保在包含的文件的顶部有一个名称空间声明--比如名称空间您的\ namespace 。为了避免冲突,在代码中引用PHP时,需要显式地告诉PHP您指的是哪个类。您已经提到了您的文件包含一个响应类,该类也存在于Laravel中。为了能够同时使用这两种方法,您需要将其中一个化名为:
use Illuminate\Http\Response as LaravelResponse;
use Your\Namespace\Response;
现在,在您的代码中,您可以将Laravel的响应类称为LaravelResponse,,也可以通过简单的响应来引用您的响应。
只要该文件位于Laravel可访问的文件夹中,并将其修补程序添加到composer.json.中,则文件的位置与此无关
请记住,每个文件存储多个类是不可取的做法。我强烈建议您将罚款分成每个类单独的文件+一个带有全局函数的附加文件。
发布于 2015-08-23 07:12:26
化名
例如。
use App\Http\Requests\Request as DifferentRequest;
DifferentRequest->doStuff();
混叠/进口
https://stackoverflow.com/questions/32163999
复制相似问题