【问题标题】:How to include some file inside a laravel controller如何在 laravel 控制器中包含一些文件
【发布时间】:2014-01-11 00:47:08
【问题描述】:

我有一个文件可以计算一些东西,比如说税收。 Tax.php,这是在某个文件夹中,比如说/MyCalculations/Taxes/Tax.php

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

Tax.php 示例代码:

<?php namespace MyCalculations/Taxes;

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

我正在使用 laravel。谢谢

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以首先为您的应用程序创建一个命名空间,然后在您的应用程序目录中放置一个文件夹,可能是 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);
        }
    

    【讨论】:

    • @nielisano 先生,如果我使用刀片来显示这些计算,也可以将 use Projectname\MyCalculations\Taxes\Tax; 放入 myview.blade.php 并访问这些数据,或者我应该通过控制器来完成吗?跨度>
    • 你可以为此做一个外观,所以你可以做 Tax::getAwesome($value),但我更愿意在将变量传递给视图之前在演示者中这样做。查看 github.com/ShawnMcCool/laravel-auto-presenter 并阅读 Laravel 文档中的外观。
    【解决方案2】:

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

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

    【讨论】:

    • @Belmark Caday :如果您计划拥有多个自定义类,我建议您为自定义类设置一个全局命名空间和一个新的libraries 目录。 This 是一篇关于该主题的好文章 - 我过去曾使用过类似的结构,并且对结果感到满意。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2014-12-27
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多