我在xdebug上有问题,因为不要在某些断点中停止。
我的项目具有MVC架构,并且在我创建子构造器时都可以调试,因为在子controllers中,断点不起作用。如果我将xdebug_break()
放入子构造器中,则可以工作。
我检查了xdebug_remote.log
此断点不起作用
<- breakpoint_set -i 1309 -t line -s enabled -f file:///var/www/my_project/app/controllers/settings/LanguageController.php -n 18
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1309" state="enabled" id="59770002"></response>
此断点工作
<- breakpoint_set -i 1310 -t line -s enabled -f file:///var/www/my_project/app/controllers/IndexController.php -n 15
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="1310" state="enabled" id="59770003"></response>
有可能,命名空间有罪?控制器和子控制器之间的一个区别是命名空间。在控制器中未定义,但是在子构卷中定义了。
我解决了问题。我将名称空间更改为camelcase中,然后更改了文件夹结构上的寄存器名称空间。
在控制器中:
namespace MyAppControllersSettings;
in Loader.php
$loader->registerNamespaces( [ 'MyAppControllersSettings' => DIR.'/../controllers/settings' ] )->register();
(正确工作)
在控制器中:
namespace appcontrollerssettings;
in Loader.php
$loader->registerNamespaces( [ 'appcontrollerssettings' => DIR.'/../controllers/settings' ] )->register();