Yii 1.1创建对象时的类冲突

5jdjgkvh  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(118)

我在我的项目中使用Yii 1.1版本,我有两个同名的类。
一个类是组件,另一个是控制器类。请找到下面的路径和代码示例。
protected/components/Payment.php

class Payment extends AppComponent {

}

protected/controllers/Payment.php

class Payment {
    public function __construct($paymentType) {
        $this->paymentType = $paymentType;
    }
}

protected/controllers/SiteController.php

require_once( $_SERVER["DOCUMENT_ROOT"] . '/protected/controllers/Payment.php' );
$paymentInit = new Payment(PAYMENT::PAYMENT_TYPE);

上述代码protected/controllers/Payment.php未正确放置/命名在项目文件路径中,这导致了类名与组件文件protected/components/Payment.php相同的问题,当我们在SiteController.php中调用protected/components/Payment.php时,在为该类创建对象时会发生冲突。
请帮助这一点,让我知道我如何才能得到数据从protected/controllers/Payment.php到我的SiteController.php

  • 注意:我不想重命名类名称,因为它是由别人写过的。如果我重命名类名称,它会正常工作,但它会对我们现有的代码库产生巨大影响。*
8hhllhi2

8hhllhi21#

protected/controllers/Payment.php
只有控制器应该放在protected/controllers下。如果Payment.php是一个控制器,那么名称应该是PaymentController.php
我不想重命名类名
两个同名的类不使用命名空间是个问题。命名空间是Yii 2的一部分,但不是Yii 1的作用域,因为Yii 1需要PHP 5.1,而命名空间是在PHP 5.3版本中添加的。
请帮助这一点,让我知道我如何才能得到的数据从protected/controllers/Payment.php到我的SiteController.php
应用程序bootsrap + controller + modell + view是捆绑在一起的。你不能简单地从控制器中抓取一个方法或类来让它像在捆绑包中一样工作。如果你想在不同的控制器中使用代码,你应该把它们移到一个组件中,并从两个控制器中引用这个代码。
如果你只需要支付控制器的输出,你也可以加载一个渲染整个操作,比如调用网站。

相关问题