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

时间:2014-01-10 16:27:10

标签: php laravel

我有一个计算某事的文件,比方说税。 Tax.php,这是在某个文件夹中,比方说/MyCalculations/Taxes/Tax.php

现在我希望在我的控制器中访问此文件,如何访问此文件,或者如何在此文件中访问这些计算?

Tax.php的示例代码:

<?php namespace MyCalculations/Taxes;

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

我正在使用laravel。感谢

2 个答案:

答案 0 :(得分:2)

您可以从为应用程序创建命名空间开始,并在app目录中放置一个文件夹,可能是app / Projectname。 然后你可以将你的计算命名空间放在那里。然后通过添加

自动加载项目中的所有内容
"autoload": {
    "classmap": [
        "..."
    ],
    "psr-0": {
        "Projectname": "app/"
    }
},

到您的composer.json文件,然后执行dump-autoload。然后你可以在控制器中使用依赖注入,如下所示:

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);
    }

答案 1 :(得分:0)

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

"autoload": {
    ...

    "files": [
        "app/MyCalculations/Taxes/Tax.php"
    ]
},

然后你必须执行:

composer dump-autoload

并在任何地方使用它们。

如果您使用的是PHP 5.5,则还可以使用特征:

<?php namespace MyCalculations/Taxes;

  trait TaxesTraits  {

     function calculateX()
     {

     }

  }

  class Taxes extends Enginge {
     use TaxesTraits;

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