【问题标题】:How to include a function file in symfony2 in controller如何在控制器的 symfony2 中包含函数文件
【发布时间】:2017-03-24 12:04:50
【问题描述】:

您好,我有一个名为 payment.php 的文件,它包含一些与支付相关的函数和一些多个类。所以我想将该文件包含在我的 symfony2 控制器中以访问它的所有方法和无类。我正在尝试如下:

//File location is in src/AppBundle/Controller/payment.php

namespace AppBundle\Controller;

require_once __DIR__.'/./payment.php';

//My controller
class ApiServicesController extends Controller
{
   $this->payment(array('txnId'=>1112548));
}

但我无法访问该文件及其方法。

我使用这种方法是因为将它保存在 /vendor 目录中它也无法访问,因为该文件在同一文件中包含多个无类。

请告诉我如何在我的控制器中访问此文件。

提前致谢

【问题讨论】:

  • 但我无法访问该文件及其方法 - 哪些方法?
  • $this->payment(array('txnId'=>1112548));这个方法是在 payment.php payment() 方法中定义的。
  • ApiServicesController 不是一个有效的类
  • 为什么它是一个有效的类我已经在使用这个控制器了。什么是无效类?
  • ApiServicesController应该在文件Controller/ApiServicesController.php中

标签: php symfony


【解决方案1】:

如果 paymant.php 有类,您需要创建该类的实例以从中调用方法,这就像基本的 OOP 东西。

class ApiServicesController extends Controller
{
   $this->payment(array('txnId'=>1112548));
}

首先,你想调用你的方法的控制器中的方法在哪里?那么,如果它来自不同的类,为什么要在 $this 上调用 payment。应该是这样的

class ApiServicesController extends Controller
{
   public function indexAction()
   {
       $somePaymentClass = new SomePaymantClass(); //whatever class you want from payment.php
       $somePaymentClass->payment(array('txnId'=>1112548));
   }
}

但我强烈建议将其用作服务并将其放在某个自动加载器命名空间中。

【讨论】:

  • 亲爱的,我知道哎呀的概念。问题是 payment.php 有多个类和不同的方法。它是一个文件,我只是将它包含在我的控制器中,以访问方法 payment():
  • $somePaymentClass = new SomePaymantClass(); //无论您想从 payment.php 中获得什么类:注意:payment() 方法不在任何类中。就像在 payment.php 文件中一样
  • >亲爱的,我知道 oops 概念 通过查看您的代码,您不知道;)如果他们不在课堂上,只需在包含后调用它们。 payment(array('txnId'=>1112548)) 不要在 $this 上调用它们,也不要在方法函数之外调用它们。这样做require_once("path/to/file.php"); class ApiServicesController extends Controller { public function indexAction() { payment(array('txnId'=>1112548)); } }
【解决方案2】:

您必须将支付类作为服务,然后您可以在控制器中使用支付类的所有功能。请参考本文档。 http://symfony.com/doc/current/service_container.html

【讨论】:

  • 是的,但是该文件 payment.php 已经在单个文件中包含多个类。我怎样才能把它们放在一个班级里?
  • 如果这是您的自定义类,我建议您创建单独的类文件,而不是将所有文件合二为一。您可以将所有文件注册为服务并在任何控制器中使用。
  • 没有那个文件 (payment.php) 我从供应商付款网关套件 (payumoney) 获得的。这就是为什么我对此无能为力。我需要将此支付网关集成到 symfony2 应用程序中
  • 你试过这个捆绑包吗? packagist.org/packages/fsi/sylius-payu-bundle
  • 让我试试这个。
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多