【问题标题】:How to use class in Controller in Laravel如何在 Laravel 的控制器中使用类
【发布时间】:2018-08-15 04:07:09
【问题描述】:

我在我的 laravel 项目的 app 目录中创建了一个类 Payment.php,我正在尝试在我的 HomeController.php 控制器中使用它。我使用use App\Payment;statement 导入了我的支付类,但它显示以下错误

Symfony\Component\Debug\Exception\FatalThrowableError (E_ERROR) 未找到“App\Payment”类

app\http\controllers\ HomeController.php

<?php

namespace App\Http\Controllers;
use App\Payment;
use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index(){
        $payment = new Payment();
    }

}

app\ Payment.php

<?php
    class Payment {
        private $url;
        private $salt;
        private $params = array();

        public function __construct ( $salt, $env = 'test' )
        {
            $this->salt = $salt;
            switch ( $env ) {
            case 'test' :
                $this->url="https://testpay.easebuzz.in/";
                break;
            case 'prod' :
                $this->url = 'https://pay.easebuzz.in/';
                break;
            default :
                $this->url="https://testpay.easebuzz.in/";
            }
        }
    }

【问题讨论】:

  • 在你的类定义上方添加namespace App;
  • 一般模型类是以你使用的方式导入的,但是对于自定义类你需要命名空间,正如@AmitMerchant所说。
  • 你缺少你的命名空间

标签: php laravel


【解决方案1】:

您必须为类命名。当您添加一个必须由其他类中的命名空间导入的类时,您应该在类声明文件中指定命名空间。

App\Payment.php

<?php
    namespace App;

    class Payment {
        private $url;
        private $salt;
        private $params = array();

        ...
    }

【讨论】:

  • 您至少应该为您的答案添加一些解释。也无需为单行更新复制整个代码。
  • 发布了答案并试图对其进行编辑,感谢您的关注:)
【解决方案2】:

首先尝试学习命名空间的使用

命名空间和使用不是 Laravel 的特性。这些是核心 PHP 功能的一部分,可以像任何其他结构一样使用。 命名空间基本上将您的函数、类和常量分组在一个特定的“名称”下,我们称之为命名空间。

namespace myself;
function hello(){
  echo 'hai';
}

现在,如果您包含由上述代码组成的 php 文件,您现在可以通过以下方式调用函数 hello():

<?php
require 'myself.php';
myself\hello();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2016-08-25
    • 2018-01-24
    相关资源
    最近更新 更多