如何使用xdebug和Netbeans调试Yii REST控制器文件(断点放在哪里,url使用什么)?

如何使用xdebug和Netbeans调试Yii REST控制器文件(断点放在哪里,url使用什么)?,netbeans,yii2,firebird,xdebug,yii-extensions,Netbeans,Yii2,Firebird,Xdebug,Yii Extensions,我已经安装了Netbenas、XAMPP、xdebug和Yi2,并且我有简单的REST控制器: <?php namespace app\controllers; use yii\rest\ActiveController; class ContractController extends ActiveController { public $modelClass = 'app\models\Contract'; } 我想调试这个错误,以确定如何改进Yii Firebird插件,

我已经安装了Netbenas、XAMPP、xdebug和Yi2,并且我有简单的REST控制器:

<?php
namespace app\controllers;
use yii\rest\ActiveController;

class ContractController extends ActiveController
{
    public $modelClass = 'app\models\Contract';
}
我想调试这个错误,以确定如何改进Yii Firebird插件,但如果这个控制器没有操作(使用基类中的操作),我可以将断点放在哪里。在运行配置中,我有项目URL:

http://localhost:8081/myproject/
和索引文件:

web/index.php
我的意图是在这里放置一个给出错误的url:

error on line 2 at column 431: Encoding error
http://localhost:8081/myproject/web/index.php/contract
但Netbeans不接受索引文件字段中的/contract部分

那么-我应该在Netbenas中打开哪个文件,以及如何指示我要调试url

你的

class ContractController extends ActiveController
ActiveController

因此,您可以将断点放置到正确的ActiveController操作

你可以找到

public function actions()
{
    return [
        'index' => [
            'class' => 'yii\rest\IndexAction',
            'modelClass' => $this->modelClass,
            'checkAccess' => [$this, 'checkAccess'],
        ],
        'view' => [
            'class' => 'yii\rest\ViewAction',
            'modelClass' => $this->modelClass,
            'checkAccess' => [$this, 'checkAccess'],
        ],
        'create' => [
            'class' => 'yii\rest\CreateAction',
            'modelClass' => $this->modelClass,
            'checkAccess' => [$this, 'checkAccess'],
            'scenario' => $this->createScenario,
        ],
        'update' => [
            'class' => 'yii\rest\UpdateAction',
            'modelClass' => $this->modelClass,
            'checkAccess' => [$this, 'checkAccess'],
            'scenario' => $this->updateScenario,
        ],
        'delete' => [
            'class' => 'yii\rest\DeleteAction',
            'modelClass' => $this->modelClass,
            'checkAccess' => [$this, 'checkAccess'],
        ],
        'options' => [
            'class' => 'yii\rest\OptionsAction',
        ],
    ];
}
你可以看到,对于每个动作,你都有一个适当的类,例如:

  'class' => 'yii\rest\IndexAction',
在同一目录
vendor/yiisoft/yii2/rest/ActionController
中,您可以找到类代码

然后可以将断点放在相关的类运行函数上

public function run()
{
    if ($this->checkAccess) {
        call_user_func($this->checkAccess, $this->id);
    }

    return $this->prepareDataProvider();
}
public function run()
{
    if ($this->checkAccess) {
        call_user_func($this->checkAccess, $this->id);
    }

    return $this->prepareDataProvider();
}