2017-02-21 39 views
0

在调试或尝试使用不同版本的方法而不使用注释时,快速省略PHP中的某些代码的方法是什么?在调试时省略部分代码而不使用注释的快速方法

E.g.考虑这个代码:

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { 
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; 
} 

if (socket_bind($sock, $address, $port) === false) { 
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 

if (socket_listen($sock, 5) === false) { 
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 

这将是很好,如果我可以直接告诉PHP,如果没有注释掉中间忽略。

E.g.在书中使用某种标记/标记。

有没有这样的事情?在试图找到解决问题的正确方法时来回注释代码看起来很麻烦。

+0

为什么你不能取消注释? – RichardAtHome

+0

那么,我正在使用goto,而原型,似乎更快,而找到正确的方法,而不是评论和取消注释。我只是基本上定义了'goto end;'中断在哪里,然后是'end的终点:'这是原型设计中最快的方法,除非有人有更好的方法来做这件事。等待你的想法。我希望PHP有一些我不知道的隐藏的原型制作宝石策略; D –

+0

您发布的代码中没有任何goto的内容。如果您发布的代码尽可能接近实际代码,那么这非常有帮助。你真正的问题是你正在使用goto's。 :-( – RichardAtHome

回答

1

试试'特征标志',只需在true和false之间切换到'打开'您想要运行的代码的相关部分。考虑这个:

$method1 = true; 
$method2 = false; 
$method3 = false; 

if ($method1 && ($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { 
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; 
} 

if ($method2 && socket_bind($sock, $address, $port) === false) { 
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 

if ($method3 && socket_listen($sock, 5) === false) { 
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; 
} 
+0

这种方法的问题在于,它太多的编写,而找到正确的方法处理事情和编辑过多找到正确的方法等等。现在,我认为goto是原型制作中最快的方式,我通过'goto end;'然后'end:'来定义断点/ jumppoint作为端点,但也许有更快的速度?任何想法? –

+0

在这种情况下,您可以使用策略模式,您可以创建一个正确策略的实例并执行该策略,您可以在策略模式事实中包含策略的实例ory(对象或方法)保持代码的合理性。 – RichardAtHome

相关问题