PHP的一个好的noop是什么?

13
有时我什么也不想做。
我只想有一个语句,以便我可以设置断点。
在C和Objective-C中,我们使用while (false);
假设我想要退出一个函数。
-(void)viewDidAppear:(BOOL)animated
{

    [super viewDidAppear:animated];
    self.navigationItem.leftBarButtonItem=nil;
    self.navigationItem.rightBarButtonItem=nil;


    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(updateDisplays) name: NotificationUpdateArroworLocation object:nil];

    PO(self.tableView.indexPathForSelectedRow);
    while(false);//I put break point here so program stop here.
}
在 .net 中,我们有 doNothing(不确定我是不是编造的?)。
在 PHP 中应该使用什么?

2
为什么你不也使用 "while(false);"? - skurton
2
为什么需要一个虚拟函数?如果你有一个不错的IDE,你应该能够在闭合花括号上设置断点。 - pritaeas
1
@kmkaplan - Zend 提供了一个调试器,但xDebug是更常用的。我肯定不会考虑在没有调试器和所有其他标准测试工具的情况下进行任何严肃的开发工作。 - SDC
这并没有完全回答关于noop的问题,但是当需要在没有适合附加断点的行时设置断点时,我通常使用xdebug_break() - Tomeh
你想用它实现什么?你可以在任何一行上设置断点。 - Nico Haase
显示剩余8条评论
3个回答

15

你可以使用同样的技巧和许多其他功能:

<?php
    while (false);
    // or empty output
    echo '';
    // or any expression without side effects
    5 + 5;

如果您使用XDebug,您可以直接在任何地方调用xdebug_break()函数。


11

assert(true);

足以附加断点吗?

对于开发环境,应该编译和执行断言。 对于生产环境,可能不应该编译或执行断言。因此您可以将它们保留下来。这是有用的!

http://www.php.net/manual/en/function.assert.php


2

对于PHP,我使用分号和注释来使代码更加明确:

; // noop

维基百科上说,在C语言中,独立的分号在单独一行上是一种经典的写法。

请通过编辑您的答案添加一些解释。如果在此行上设置断点,XDebug会停留在这里吗? - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接