Php 如何在laravel控制器中包含一些文件

Php 如何在laravel控制器中包含一些文件,php,laravel,Php,Laravel,我有一个文件可以计算一些东西,比如说税Tax.php,它位于某个文件夹中,比如说/MyCalculations/Taxes/Tax.php 现在我想在我的控制器中访问这个文件,我如何访问这个文件,或者如何访问这个文件中的那些计算 Tax.php的示例代码: <?php namespace MyCalculations/Taxes; class Taxes extends Enginge { //some calculations here } ?> 我用的是拉

我有一个文件可以计算一些东西,比如说税
Tax.php
,它位于某个文件夹中,比如说
/MyCalculations/Taxes/Tax.php

现在我想在我的控制器中访问这个文件,我如何访问这个文件,或者如何访问这个文件中的那些计算

Tax.php的示例代码:

<?php namespace MyCalculations/Taxes;

  class Taxes extends Enginge {
    //some calculations here
  }
?>


我用的是拉威尔。谢谢

编辑composer.json文件并将“文件”部分添加到其中:

"autoload": {
    ...

    "files": [
        "app/MyCalculations/Taxes/Tax.php"
    ]
},
然后,您只需执行:

composer dump-autoload
并在任何地方使用它们

如果您使用的是PHP 5.5,还可以使用traits:

<?php namespace MyCalculations/Taxes;

  trait TaxesTraits  {

     function calculateX()
     {

     }

  }

  class Taxes extends Enginge {
     use TaxesTraits;

     public function calculate()
     {
        $x = $this->calculateX();
     }
  }

您可以先为应用程序创建名称空间,然后在应用程序目录中放置一个文件夹,可能是app/Projectname。
然后你可以把你的计算放在那里。然后通过添加自动加载项目中的所有内容

"autoload": {
    "classmap": [
        "..."
    ],
    "psr-0": {
        "Projectname": "app/"
    }
},
下载到composer.json文件,然后进行转储自动加载。然后您可以在控制器中使用依赖项注入,如下所示:

use Projectname\MyCalculations\Taxes\Tax;

class TaxController extends BaseController {

    protected $tax;

    public function __construct(Tax $tax)
    {
        $this->tax = $tax;
    }

    public function getTaxValue()
    {
        $value = Input::get('value');

        return $this->tax->getAwesome($value);
    }

@Belmark Caday:如果您计划拥有多个自定义类,我建议为您的自定义类设置一个全局名称空间和一个新的
目录。这是一篇关于该主题的好文章-我过去使用过类似的结构,并且对结果感到满意。@nielisano先生,如果我使用blade显示这些计算,也可以将
use Projectname\MyCalculations\Tax\Tax在myview.blade.php中访问这些数据,或者我应该通过控制器来访问这些数据?您可以为此创建一个外观,这样您就可以执行Tax::getAwesome($value),但我更愿意在将变量传递给视图之前在演示器中执行此操作。查看并阅读Laravel文档中关于立面的内容。